What is the best practice for a regression test that wants to know about encapsulated information?

by Wallace Brown   Last Updated May 07, 2018 20:05 PM

Suppose you have two classes: Alpha, and Bravo.

Alpha has a Bravo class with no getter (e.g. not publicly visible).
Bravo has a String named charlie (and a method to Get that String).

Let's say you have set up a test that constructs a new Alpha class. At the end of this test, you want to assert that bravo.getCharlie() is equal to some expected String. How should the test get access to this String?

Should we add a getBravo() method to Alpha just because this test seems to need it?

assertEquals("expectedString", alpha.getBravo().getCharlie());

Should we continue hiding Bravo but add a getter for Charlie inside of Alpha?

assertEquals("expectedString", alpha.getCharlie());

(where alpha.getCharlie() is just a way of writing alpha.getBravo().getCharlie() without making that Bravo getter public)

Any other options?

Related Questions

Testing properties with private setters

Updated April 29, 2016 08:02 AM

Best practices on unit tests for consecutive functions

Updated November 26, 2018 22:05 PM


Updated February 18, 2017 10:05 AM

What does stubbing mean in programming?

Updated March 03, 2017 13:05 PM