- Test method names should be sentences (This_method_does_this(){})
- Test the happy path – the most common/important functionality (acceptance criteria should be executable)
- Test at the highest level that is practical
- Unit Tests should not:
- Talk to the database
- Talk to the network
- Touch the file system
- Don’t change business logic to write the code
- Depend on any other tests (can be run at any time, in any order)
- Depend on environment variables (USE MOCKS!)
- Tests should be fast (lengthy tests are doing something wrong)
- Less than 10 lines of code
- Only one or two logical asserts per test
- Don’t write tests after development is done
Further reading: