#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