На какие пакеты мне нужно ссылаться, чтобы создать свой собственный NUnit console runner?

#c# #.net-core #nunit #nunit-console

#c# #.net-core #nunit #nunit-консоль

Вопрос:

Я пытаюсь создать свой собственный NUnit console runner.

Добавление ссылки на NUnit в мой проект не позволяет мне получить доступ к NUnit.Common , NUnit.Engine или NUnit.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 #)?

Ответ №1:

Вам нужен движок NUnit — это та часть проекта, которая предназначена для использования внешними программами-«бегунами» для запуска тестов.

Вы должны использовать nunit.engine пакет NuGet. Единственной сборкой, на которую должен ссылаться ваш раннер, должна быть nunit.engine.api.dll — это поддерживаемый интерфейс, который будет означать, что ваш раннер продолжит работать с будущими версиями движка.

Здесь есть некоторая документация по процессу: https://github.com/nunit/docs/wiki/Test-Engine-API

Ваш раннер не должен ссылаться на NUnit пакет NuGet. Этот пакет содержит тестовую платформу, на которую должна ссылаться каждая тестовая сборка, но не раннеры.

Надеюсь, это поможет — удачи!

Ответ №2:

Взгляните на файл проекта в исходниках GitHub, который вы прикрепили. Они ссылаются на nunit.engine.api project, поэтому вам следует добавить и это. NUnit.Engine.API — это пакет Nuget, содержащий эту ссылку

Комментарии:

1. Какой файл проекта? Я вижу ссылку на существующий проект в nunit-console / src / NUnitConsole /nunit3-console / nunit3-console.csproj, но не ссылку на PackageReference.

2. @jbcoe Да, это верно. Они ссылаются на свои собственные источники, вам следует ссылаться на пакеты для вашего раннера, nunit.engine и nunit.engine.api