Csharp/C#教程:如何从我的代码中运行NUnit分享


如何从我的代码中运行NUnit

我想使用NUnit在我的插件中运行unit testing,但它需要在我的应用程序的上下文中运行。 为了解决这个问题,我试图开发一个运行NUnit的插件,然后NUnit将在应用程序的上下文中执行我的测试。

我没有找到关于这个主题的具体文档,所以我在这里和那里挖了一条信息,然后我得到了下面的一段代码(类似于我在StackOverflow中找到的代码):

public static void Main() { SimpleTestRunner runner = new SimpleTestRunner(); TestPackage package = new TestPackage( "Test" ); string loc = Assembly.GetExecutingAssembly().Location package.Assemblies.Add( loc ); if( runner.Load(package) ) { TestResult result = runner.Run( new NullListener() ); } } 

结果变量说“没有TestFixture”,虽然我知道它确实存在。 实际上我的测试文件包含两个测试。

使用我发现的另一种方法,通过以下代码总结:

 TestSuiteBuilder builder = new TestSuiteBuilder(); TestSuite testSuite = builder.Build( package ); // Run tests TestResult result = testSuite.Run( new NullListener(), NUnit.Core.TestFilter.Empty ); 

我看到只有1个测试的nunit数据结构,我有同样的错误。

为了完整起见,我使用的是最新版本的nunit,即2.5.5.10112。

有谁知道我错过了什么? 一个示例代码将不胜感激。 我的测试类是:

 [TestFixture] public class UnitTests { public UnitTests() { } [Test] public void TestEqual() { long a = 10; long b = 10; Assert.AreEqual( a, b ); } [Test] public void TestNotEqual() { long a = 10; long b = 11; Assert.AreNotEqual( a, b ); } } 

以下代码有助于解决此问题

 public static void Main() { CoreExtensions.Host.InitializeService(); SimpleTestRunner runner = new SimpleTestRunner(); TestPackage package = new TestPackage( "Test" ); string loc = Assembly.GetExecutingAssembly().Location; package.Assemblies.Add( loc ); if( runner.Load(package) ) { TestResult result = runner.Run( new NullListener(), TestFilter.Empty, false, LoggingThreshold.Off ); } } 

我已经在NUnit论坛上发布了我的问题,查理给了我一个关于如何找到问题的提示。 我认为将它发布在这里可能是一个好主意,以便其他人可以防止花费大量时间。 解决方案是首先使用以下行初始化核心服务:

 CoreExtensions.Host.InitializeService(); 

谢谢大家。

我在SimpleTestRunner()类中遇到了很多麻烦。 最后,我切换到RemoteTestRunner()类,以编程方式执行unit testing。 实现更容易,最好的是它的工作原理。

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

您需要引用以下程序集:

当然, nunit.framework.dll必须位于包含测试程序集的文件夹中。

上述就是C#学习教程:如何从我的代码中运行NUnit分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/989338.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐