2015-11-20 289 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文件中。我不喜歡這種方法,因爲您可以使用簡單的批處理文件實現相同的功能。