我有NUnit GUI运行器,每次构建时都会在我的单元测试程序集上运行测试。问题是,当我尝试构建时,NUnit正在使用Debug文件夹中的.dll,这阻止了它的构建,这阻止了自动测试运行。有办法解决这个问题吗?
答案 0 :(得分:0)
每当您构建解决方案时。我建议你关闭装有你的.dll的Nunit。卸载后尝试构建,然后您的构建将成功。
由于Nunit正在使用你.dll。它不会让你的构建成功。
答案 1 :(得分:0)
前一段时间我遇到过类似的问题,我的最终解决方案是从使用NUnit GUI运行器辞职,直接从代码中运行它们。
在我的项目中,我引用了那些新构建的dll以及nunit.core和nunit.utils所需的NUnit库。代码本身非常简单:
TestResult ExecuteTests(string testAssemblyPath) {
CoreExtensions.Host.InitializeService();
TestPackage testPackage = new TestPackage(testAssemblyPath);
testPackage.BasePath = Path.GetDirectoryName(testAssemblyPath);
RemoteTestRunner testRunner = new RemoteTestRunner();
testRunner.Load(testPackage);
TestResult testResult = testRunner.Run(new NullListener(), TestFilter.Empty, true, LoggingThreshold.Warn);
testRunner.Unload();
CoreExtensions.Host.UnloadService();
return testResult;
}
TestResult
对象非常强大。除其他外,它包含所有结果,子结果,测试本身等。为了分析它们,您可以创建一个简单的解析器或使用NUnit库给出的一种可能性。我最喜欢的是XmlResultWriter
,但也有其他人可用。所有这些都可以在nunit.util.dll中找到。
不幸的是,这仍然会阻止加载的dll被重建。我通过在单独的AppDomain中运行它并在测试完成运行后卸载此域来避免此问题。然后dll很好地释放,你可以随心所欲地使用它。
答案 2 :(得分:0)
我可以建议一种略有不同的方法,但与@UvarajGopu ....
一样只要您使用的Visual Studio高于" Express"如果你将UnitTests写在一个单独的项目中(通常与正在测试的项目一起使用" .UnitTests"后缀),那么执行以下操作:
现在您只需按F5(开始调试)即可构建您的项目,并为您启动NUnit GUI。这具有额外的优势,如果您的测试失败,您可以添加断点,并逐步使用调试器(无需手动附加调试器)。