我知道兩個可能的解決方案來實現你想要什麼。 NUnit團隊在nuget上發佈了NUnit Engine和NUnit 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 Engine和NUnit Console包。在項目中添加對nunit3-console.exe
的引用。結果將保存在TestResult.xml
文件中。我不喜歡這種方法,因爲您可以使用簡單的批處理文件實現相同的功能。