Nunit-预期误差有所不同
-
25-09-2019 - |
题
我是TDD的新手,并且正在与Nunit和Moq一起使用。我有一种我希望有例外的方法,所以我想使用Frameworks功能进行一些播放。
我的测试代码如下:
[Test]
[ExpectedException(ExpectedException = typeof(MockException), ExpectedMessage = "Actual differs from expected")]
public void Write_MessageLogWithCategoryInfoFail()
{
string message = "Info Test Message";
Write_MessageLogWithCategory(message, "Info");
_LogTest.Verify(writeMessage =>
writeMessage.Info("This should fail"),
"Actual differs from expected"
);
}
但是我总是收到错误消息,即实际异常消息与预期消息不同。我究竟做错了什么?
解决方案
不幸的是,Resharper测试跑者具有错误/限制 - 它无法处理ExpectionException属性。您有2个选项:
使用其他一些测试跑者(例如Nunit -gui.exe,用Nunit运送) - 但是这种方法使调试测试的痛苦很痛苦
使用以下模式手动捕获和验证异常:
test] public void write_messagelogwithcategoryinfofail(){尝试{字符串消息=“ info test message”;
Write_MessageLogWithCategory(message, "Info"); _LogTest.Verify(writeMessage => writeMessage.Info("This should fail"), "Actual differs from expected" ); Assert.Fail("Expected exception"); } catch(MockException e) { Assert.AreEqual("Actual differs from expected", e.Message); }
}
这是一个真正的耻辱,因为说明您期望例外的描述方式要好得多!
附带说明我希望上面的代码仅用于使用该框架 - 通常您永远不会抓住mockexceptions :)
其他提示
您可以使用额外的参数 MatchType = MessageMatch.Regex
.
不隶属于 StackOverflow