In order to design properly a test, we need to define specifically what needs to be implemented. To that aim, it is important to remember what is the generic structure of a test, already explained in chapter 1, Retrospective On Software Quality And Java Testing. Therefore, for each test we need to define:
- What is test fixture, that is, the required state in the SUT to carry out the test? This is done at the beginning of the test in the stage called setup. At the end of the test, the test fixture might be released in the stage called teardown.
- What is the SUT, and if we are doing unit tests, which are its DOC(s)? Unit test should be in isolation and therefore we need to define test doubles (typically mocks or spies) for the DOC(s).
- What are the assertions? This a key part of tests. Without assertions, we cannot claim that a test is actually made. In order to design...