首页 > 解决方案 > 如何在 C# 代码中运行 NUnit 测试

问题描述

我有一个 .NET Core NUnit 测试项目,其中包含一些TestFixtures和许多Tests. 我可以在 Visual Studio 中运行这个项目,并在一个特殊的 Visual Studio 测试结果窗口中看到测试结果。

现在,问题是,我想创建一个控制台应用程序,它将每 5 分钟运行一次这些测试并存储每个测试的结果(它成功了吗?它执行了多少时间?如果有异常,它们是什么?说?等...)。所以,在伪代码中,我想做类似的事情:

var testsResults = RunTests("my NUnit test project from NuGet");
StoreResultsInDataBase(testResults);

我将如何实现该RunTests方法?我在 SO 上找到了这篇文章:如何从我的代码中运行 NUnit 答案之一显示了这样的代码:

TestPackage package = new TestPackage(@"C:\YourProject.Tests.dll");
RemoteTestRunner remoteTestRunner = new RemoteTestRunner();
remoteTestRunner.Load(package);
TestResult result = remoteTestRunner.Run(new NullListener());

它似乎完全符合我的需要。我尝试使用它,但是,我在TestPackage课堂上遇到了问题。我只在NUnitTestAdapter.WithFramework包中找到它,这是一个来自 NuGet 的 .NET Framework 项目(我需要使用 .NET Core)。

是否有适用于 .NET Core 的解决方案?我能想到的唯一解决方案是使用反射来查找所有具有[Test]属性的方法并运行它们。但是,这会有点问题,因为我的测试也使用[Order]并且需要以正确的顺序运行。

标签: c#unit-testingnunit

解决方案


推荐阅读