Chapter 7. Test hierarchies and organization

 

This chapter covers

  • Running unit tests during automated nightly builds
  • Using continuous integration for automated builds
  • Organizing tests in a solution
  • Exploring test class inheritance patterns

Unit tests are as important to an application as the production source code. As with the regular code, you need to give careful thought to where the tests reside, both physically and logically, in relation to the code under test. If you put unit tests in the wrong place, the tests you’ve written so carefully may not be run.

Similarly, if you don’t devise ways to reuse parts of your tests, create utility methods for testing, or use test hierarchies, you’ll end up with test code that’s either unmaintainable or hard to understand.

This chapter addresses these issues with patterns and guidelines that will help shape the way your tests look, feel, and run and will affect how well they play with the rest of your code and with other tests.

Where the tests are located depends on where they’ll be used and who’ll run them. There are two common scenarios: tests run as part of the automated build process and tests run locally by developers on their own machines. The automated build process is very important, and that’s what we’ll focus on next.

7.1. Automated builds running automated tests

7.2. Mapping out tests based on speed and type

7.3. Ensuring tests are part of source control

7.4. Mapping test classes to code under test

7.5. Cross-cutting concerns injection

7.6. Building a test API for your application

7.7. Summary