2015-11-20 242 views
0

我想有一个独立的项目,这将考验通过USB连接远程系统的某些功能。如何运行NUnit测试?

所以我想使用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); 
     } 
    } 
} 

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

回答

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文件中。我不喜欢这种方法,因为您可以使用简单的批处理文件实现相同的功能。