A Unit test should test the behavior of a unit of work.
Unit tests are isolated and independent of each other.
Unit tests are lightweight tests:
- Easy to write and read
- Any given behavior should be specified in one and only one test
- The execution/order of execution of one test cannot affect the others
Ultimate Guidelines Which Helped Me a Lot.
- Whenever possible, use TDD
- Structure your tests properly
- Name your tests properly
- Don’t comment out tests
- Avoid logic in your tests
- Don’t write unnecessary expectations
- Know your testing framework API
- Consider using factory functions in the tests
- Don’t test multiple concerns in the same test
- Cover the general case and the edge cases
- Test the behavior, not the internal implementation
- Don’t mock everything
- Create new tests for every defect
- Test simple actions
- Review test code first
- When applying TDD, always start by writing the simplest failing test
- When applying TDD, always make small steps in each test-first cycle
- Properly set up the actions that apply to all the tests involved
Remember 👉 “Unit tests are code too”
Check out what Ben said in the below Image👇
Our unit test should be like this.
They should meet the same level of quality as the code being tested.
They can be refactored as well to make them more maintainable and/or readable.
Couple of awesome resources:
Most Used Libraries:
Hope you like this one. Please leave your feedback!