如何运行NUnit测试?

时间:2015-11-20 12:15:47

标签: c# nunit

我想有一个独立的项目,它将测试通过USB连接的远程系统的一些功能。

所以我想在我的应用程序中使用NUnit的所有功能。

我目前写道:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using NUnit.Framework;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine();
        }
    }

    [TestFixture]
    public class MyTest
    {
        [Test]
        public void MyTest()
        {
            int i = 3;
            Assert.AreEqual(3, i);
        }
    }
}

如何运行我的测试套件以及如何获得测试报告?

1 个答案:

答案 0 :(得分:4)

我知道两种可能的解决方案来实现你想要的。 NUnit团队在nuget上发布了NUnit EngineNUnit Console

使用NUnit引擎

using NUnit.Engine;
using NUnit.Framework;
using System.Reflection;
using System.Xml;
using System;

public class Program
{
    static void Main(string[] args)
    {
        // set up the options
        string path = Assembly.GetExecutingAssembly().Location;
        TestPackage package = new TestPackage(path);
        package.AddSetting("WorkDirectory", Environment.CurrentDirectory);

        // prepare the engine
        ITestEngine engine = TestEngineActivator.CreateInstance();
        var _filterService = engine.Services.GetService<ITestFilterService>();
        ITestFilterBuilder builder = _filterService.GetTestFilterBuilder();
        TestFilter emptyFilter = builder.GetFilter();

        using (ITestRunner runner = engine.GetRunner(package))
        {
            // execute the tests            
            XmlNode result = runner.Run(null, emptyFilter);
        }
    }

    [TestFixture]
    public class MyTests
    {
        // ...
    }
}

从nuget安装Nuget Engine package以运行此示例。结果将在result变量中。每个想要使用此软件包的人都会收到警告:

  

它不适合仅想运行的用户直接使用   测试

使用标准NUnit控制台应用程序

using NUnit.Framework;
using System.Reflection;

class Program
{
    static void Main(string[] args)
    {
        string path = Assembly.GetExecutingAssembly().Location;
        NUnit.ConsoleRunner.Program.Main(new[] { path });
    }

    [TestFixture]
    public class MyTests
    {
        // ...
    }
}

从nuget安装NUnit EngineNUnit Console个软件包。在项目中添加对nunit3-console.exe的引用。结果将保存在TestResult.xml文件中。我不喜欢这种方法,因为您可以使用简单的批处理文件来实现相同的目标。