Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I display more info in an error message when using NUnit Assert in a loop?

Consider the following code:

[Test]
public void WidgetTest()
{
    foreach (Widget widget in widgets)
    {
        Assert.AreEqual(0, widget.SomeValue);
    }
}

If one of the asserts fails, I will get a very unhelpful error message like the one below:

1) Test Failure : WidgetTest.TestSomeValue
  Expected: 0
  But was:  1

at WidgetTest.TestSomeValue()

So, the question is, how can I get NUnit to display more useful info, such as the name of the widget, or the iteration of the loop, etc? Even a line number would be more helpful, since this is run in automated manner and I'd like to be able to spot the failing assert without debugging into the code.

like image 880
iano Avatar asked Jun 14 '10 16:06

iano


1 Answers

You can use the overload which takes a message as well:

Assert.AreEqual(0, widget.SomeValue,
                "Widget " + widget + " should have SomeValue of 0");
like image 60
Jon Skeet Avatar answered Oct 20 '22 00:10

Jon Skeet