I was just reviewing someone’s code, and as I was browsing through the tests, I run into the following anti pattern, just about all the asserts were specified as:
Assert.True(pet.Owner == "Baz");
The problem with that is that this is a perfect case of “let’s create a test that will tell us nothing when it is failing”.
It seems like a minor thing, to use the more explicit version:
But it isn’t, when this assert fails, we are going to get a lovely error message telling us exactly what went wrong. From maintainability standpoint, being able to see why a test failed without debugging it is not a plus, it is essential.
Assert.True is a tool of last resort, don’t use it if you have any choice at all.