In the comment to this great post, Roy Osherove mentioned the OAPT project that is designed to run each assert in a single test.
The following is written on the project's home page:
Proper unit tests should fail for
exactly one reason, that’s why you
should be using one assert per unit
test.
And, also, Roy wrote in comments:
My guideline is usually that you test
one logical CONCEPT per test. you can
have multiple asserts on the same
object. they will usually be the same concept being tested.
I think that, there are some cases where multiple assertions are needed (e.g. Guard Assertion), but in general I try to avoid this. What is your opinion? Please provide a real world example where multiple asserts are really needed.
Best Answer
I don't think it's necessarily a bad thing, but I do think we should strive towards only having single asserts in our tests. This means you write a lot more tests and our tests would end up testing only one thing at a time.
Having said that, I would say maybe half of my tests actually only have one assert. I think it only becomes a code (test?) smell when you have about five or more asserts in your test.
How do you solve multiple asserts?