如何运行NUnit测试?

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

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

我目前写道:

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); } } } 

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

我知道两种可能的解决方案来实现你想要的。 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(); 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软件包以运行此示例。 结果将在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文件中。 我不喜欢这种方法,因为你可以使用简单的批处理文件来实现同样的目的。