Styles of Unit Testing (Output / State / Collaboration)
There are 3 major styles of unit testing:
Output verification
State verification
Collaboration verification
Output verification
You pass some input to the system under test and check what output it produces.
The yellow line here shows the point at which the examination is done.
In order to apply this style of unit testing, the system under test must not change global or internal state, so that the only component to verify would be its return value. This style of unit testing is also known as functional style. The "sut" method here doesn't leave any side effects and doesn't refer to the external world, its inputs and outputs are fully encoded with its method signature.
State verification
You verify the state of the system after the operation is completed.
The yellow circles on this picture represent that final state.
Unlike the previous sample, this method doesn't return any value, its outcome is the change made to its internal state.
Collaboration verification
You check that all collaborators got invoked in a correct order and with correct parameters.
This is normally done by substituting the collaborators with test doubles, such as mocks. For example, we create a fake implementation of the IDatabase
interface which we then pass to the service. After that, the test verifies that the expected method was called and then the correct parameter was used.
Last updated