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.

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?
