A Unit-Test should
- produce deterministic result
- be independent
- be valid
- …
What other characteristics should a test also have?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Ah. My favorite subject 🙂 Where to start…
According to xUnit test patterns by Gerard Meszaros (THE book to read about unit testing)
Some things to make this easier:
Other things to look at:
Naming
Have a descriptive name. Tests-names should read like specifications. If your names get too long you’re probably testing too much.
Structure
Use AAA structure. This is the new fad for mocking frameworks, But I think it’s a good way to structure all your tests like this.
Arrange your context
Act, do the things that need to be tested
Assert, assert what you want to check
I usually divide my tests in three blocks of code. Knowing this pattern makes tests more readable.
Mocks vs. Stubs
When using a mocking framework always try to use stubs and state based testing before resorting to mocking.
Stubs are objects that stand in for dependencies of the object you’re trying to test. You can program behaviour into them and they can get called in your tests. Mocks expand on that by letting you assert if they were called and how. Mocking is very powerfull but it lets you test implementation instead of pre and post-conditions of your code. This tends to make tests more brittle.