- A good unit test must be atomic, deterministic, repeatable, and fast.
- A good unit test must not be inconclusive.
- Test-driven development.
- Behavioral-driven development.
- A small unit of code whose only purpose is to test a single unit of code that only does one thing.
- A fake object used by the unit test to test the public methods and properties of a real object, but without testing the method or property dependencies.
- A fake object is the same as a mock object.
- MSTest, NUnit, and xUnit.
- Rhino Mocks and Moq.
- SpecFlow.
- Unnecessary comments, dead code, and redundant tests.