This article talks specifically about testing Perl but most of the concepts are relevant to all languages.

I think this is the important point:

[W]hat features do we want to see in large-scale test suites?

  1. Tests should be very easy to write and run
  2. They should run relatively quickly
  3. The order in which tests run should not matter
  4. Test output should be clean
  5. It should be obvious where to find tests for a particular piece of code
  6. Testing code should not be duplicated
  7. Code coverage should be able to analyze different aspects of the system

https://github.com/Ovid/zen-of-test-suites