我正在阅读“.NET的依赖注入”,并继续阅读本书中的一些示例,它引出了一个关于单元测试的问题。
单元测试如何知道何时pass
或fail
?
不知道为什么,但我总是假设您需要断言,如果Assert为true
,则单元测试通过,否则测试失败。
但是,情况似乎并非如此。请看下面的示例(使用NUnit
和Moq
)。
[Test]
public void Test_UserProvidedMessage()
{
Mock<IMessageWriter> m = new Mock<IMessageWriter>();
Salutation s = new Salutation(m.Object);
s.Exclaim("use this message silly");
m.Verify(w => w.Write("use this message silly"));
}
单位测试输出通过Mock.Verify
方法控制。我明白,对于这个例子,但现在我质疑我对单元测试通过或失败的了解。
单元测试如何知道何时pass
或fail
?
单元测试框架使用什么标准来确定输出是pass
还是fail
?
答案 0 :(得分:4)
如果单元测试抛出异常,则单元测试失败。
所有断言方法和模拟验证程序都会抛出特殊异常,提供有关失败的更多详细信息。
答案 1 :(得分:2)
我猜测Verify
方法如果无法验证则可能抛出异常,这会导致单元测试失败。如果没有例外则意味着它已经过去了。