如何使用NUnit 3(C#)从代码运行特定的NUnit测试

4
我正在尝试以编程方式再次运行位于同一项目中的测试。
因为如果测试的SetUp失败了,那么测试和SetUp将再次运行。
我使用Selenium Webdriver来运行测试,并且很多测试都有SetUp预操作。例如:预操作是购买一张票,然后运行一组测试以检查是否一切正常。
通常我的SetUp预操作会失败(出现错误),然后就不会运行任何测试。我想给它们第二次机会,也就是再次运行它们。
可能适合我的一个好方法是这个SO问题,但它需要NUnit 3。
在NUnit 3中没有NUnit.Core包,因此该解决方案显示了许多错误。我也不确定如果我的测试方法放置在同一项目中,是否必须使用它(因此可能不需要加载程序集)。
如何从代码中运行放置在同一项目中的测试方法?

1
你尝试过使用Retry Attribute吗?(特别注意第三点 - 你需要将当前抛出AssertionException的内容进行修改) - Chris
1个回答

9
缺失的方法和程序集是 NUnit 2.6.4 的内部实现的一部分,从未打算供公众使用。您指向的解决方案只有在它能用的时候才是“好的”,但由于它使用了内部类和方法,所以不能保证其可靠性。
对于 NUnit 3.0,您很幸运,因为现在有一个可供运行测试的公共 API。通过使用公开/发布的 API,您可以获得我们将来会让其正常工作的保证。
API 的文档现在位于 Test-Engine-API。以下是其使用的简单示例...
ITestEngine engine = TestEngineActivator.CreateInstance();
TestPackage package = new TestPackage("path/to/assembly");
ITestRunner runner = engine.GetRunner(package);
XmlNode result = runner.Run(this, TestFilter.Empty);

为了使用这个功能,您需要引用nunit.engine.api程序集(而不是nunit.engine)。假定实现ITestEventListener的类进行这些调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接