Summary
In this chapter, you learned how to validate the proper behavior of an SUT with respect to exceptional flow. You experienced how to apply the various capture and verification options, and we discussed their strengths and weaknesses. Supplementary to the test-first approach, you were taught the concepts of the fail fast design strategy and recognized how adapting it increases the overall robustness of applications. Last but not least, we explained how to handle collaborators that throw checked exceptions and how to stub their exceptional bearing.
In the next chapter, we'll discuss how exchangeable JUnit processor types allow us to adjust the environment of a test to specific requirements. We'll explain the tool runners architecture and introduce some of the more useful implementations.