我想在集成测试失败时调用一个方法(即Assert.AreEqual
失败),是否有任何我可以在NUnit框架中订阅的事件委托?当然,当测试失败时,必须触发事件委托。
这是因为在我的测试中有很多Assert
语句,我不能告诉需要记录Assert
,以及导致我的bug跟踪器出现问题的断言信息。执行此操作的最佳方法是在测试失败时调用委托方法。
答案 0 :(得分:0)
我很好奇,你想通过这样做解决什么问题?我不知道用NUnit做这个的方法,但有一个混乱的方法来做到这一点。您可以提供Func并将其作为失败消息调用。 Func的主体可以为你提供你正在寻找的代表团。
var callback = new Func<string>(() => {
// do something
return "Reason this test failed";
});
Assert.AreEqual("", " ", callback.Invoke());
答案 1 :(得分:0)
似乎在断言失败的情况下我没有订阅的事件
答案 2 :(得分:0)
这听起来像是你想要创建自己的测试运行器。
测试(定义操作)和测试运行(实际运行测试)之间存在区别。在这种情况下,如果要检测测试失败,则必须在运行测试时执行此操作。
如果您要做的就是发送失败的电子邮件,最简单的方法是创建一个运行命令行运行程序的脚本(powershell / batch),然后发送失败的电子邮件(发送到您的错误跟踪系统? )
如果您想要更复杂的交互性,可能需要考虑创建自定义运行器。跑步者可以运行测试,然后根据结果采取行动。在这种情况下,您应该在Nunit.Core
命名空间中查找测试运行器接口。
例如(未经测试):
TestPackage package = new TestPackage();
package.add("c:\some\path\to.dll");
SimpleTestRunner runner = new SimpleTestRunner();
if (runner.Load(Package)){
var results = runner.Run(new NullListener(), TestFilter.Empty, false, LoggingThreshold.Off);
if(results.ResultState != ResultState.Success){
... do something interesting ...
}
}