我需要参考哪些软件包来创建自己的NUnit控制台运行器?

时间:2019-03-19 08:39:55

标签: c# .net-core nunit nunit-console

我正在尝试创建自己的NUnit控制台运行器。

在我的项目中添加对NUnit的引用后,我无法访问控制台运行程序中使用的NUnit.CommonNUnit.EngineNUnit.Options https://github.com/nunit/nunit-console/blob/master/src/NUnitConsole/nunit3-console/Program.cs

我的项目文件:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="NUnit" Version="3.11.0" />
  </ItemGroup>

</Project>

我的来源:

using System; 
using NUnit.Common;
using NUnit.Options;
using NUnit.Engine;


namespace MyNUnitRunner
{
    class Program
    {
        static ConsoleOptions Options = new ConsoleOptions(new DefaultOptionsProvider(), new FileSystem());
        private static ExtendedTextWriter _outWriter;
        static void Main(string[] args)
        {
            try
            {
                Options.Parse(Options.PreParse(args));
            }
            catch (OptionException ex)
            {
                WriteHeader();
                OutWriter.WriteLine(ColorStyle.Error, string.Format(ex.Message, ex.OptionName));
                return ConsoleRunner.INVALID_ARG;
            }        
        }
    }
}

dotnet build的输出:

Program.cs(2,13): error CS0234: The type or namespace name 'Common' does not exist in the namespace 'NUnit' (are you missing an assembly reference?) [/Users/jon/DEV/CSSandbox/MyNUnitRunner/MyNUnitRunner.csproj]
Program.cs(3,13): error CS0234: The type or namespace name 'Options' does not exist in the namespace 'NUnit' (are you missing an assembly reference?) [/Users/jon/DEV/CSSandbox/MyNUnitRunner/MyNUnitRunner.csproj]
Program.cs(4,13): error CS0234: The type or namespace name 'Engine' does not exist in the namespace 'NUnit' (are you missing an assembly reference?) [/Users/jon/DEV/CSSandbox/MyNUnitRunner/MyNUnitRunner.csproj]
Program.cs(11,16): error CS0246: The type or namespace name 'ConsoleOptions' could not be found (are you missing a using directive or an assembly reference?) [/Users/jon/DEV/CSSandbox/MyNUnitRunner/MyNUnitRunner.csproj]
Program.cs(12,24): error CS0246: The type or namespace name 'ExtendedTextWriter' could not be found (are you missing a using directive or an assembly reference?) [/Users/jon/DEV/CSSandbox/MyNUnitRunner/MyNUnitRunner.csproj]
    0 Warning(s)
    5 Error(s)

我需要参考哪些程序包,以及如何找到这些程序包(C#的新手)?

2 个答案:

答案 0 :(得分:2)

您正在使用NUnit Engine-这是项目的一部分,打算由外部“运行程序”程序用来运行测试。

您应该插入nunit.engine NuGet软件包。运行程序应该引用的唯一程序集应该是nunit.engine.api.dll-这是受支持的界面,这意味着您的运行程序将继续使用引擎的未来版本。

此处有一些有关该过程的文档:https://github.com/nunit/docs/wiki/Test-Engine-API

您的跑步者应该引用NUnit NuGet软件包。该程序包包含测试框架,每个测试程序集都应引用该框架,而运行程序则不应引用。

希望如此-祝您好运!

答案 1 :(得分:1)

查看您随附的GitHub源代码中的项目文件。他们引用了nunit.engine.api项目,因此您也应该添加此程序包。 This是nuget的链接