4

我正在尝试以编程方式第二次运行测试,这些测试存在于同一个项目中。

因为如果测试的设置失败,那么测试和设置将再次运行。

我使用 Selenium Webdriver 运行测试,然后很多都有SetUp预操作。例如:一个预先操作是买一张票,然后运行一组测试来检查是否一切正常。

通常我的 SetUp 预操作会失败(发生错误),然后没有运行任何测试。我想给他们第二次改变,即再次运行它们。

可能对我有用的一个很好的解决方案是这个 SO question,但它需要 NUnit 3。

NUnit 3中没有NUnit.Core包,因此该解决方案显示了很多错误。如果我的测试方法放在同一个项目中,我也不确定是否必须使用它(所以也许我不需要加载程序集)。

如果将此方法放在同一个项目中,有关如何从代码运行测试方法的任何想法?

4

1 回答 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。

于 2016-02-23T18:58:40.017 回答