Запуск тестов NUnit в ядре dotnet
Я пытаюсь запустить модульные тесты для моего проекта С# с ядром dotnet.
Я использую контейнер докера для выполнения.
Dockerfile
FROM microsoft/dotnet:0.0.1-alpha
RUN mkdir /src
WORKDIR /src
ADD . /src
RUN dotnet restore
"NUnit" и "NUnit.Runners" добавлены в project.json
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811",
"NUnit": "3.2.0",
"NUnit.Runners": "3.2.0"
},
"frameworks": {
"dnxcore50": { }
}
Запустите dotnet restore
успешно со следующим выходом
...
log : Installing NUnit.ConsoleRunner 3.2.0.
log : Installing NUnit.Extension.NUnitV2ResultWriter 3.2.0.
log : Installing NUnit.Extension.NUnitV2Driver 3.2.0.
log : Installing NUnit.Extension.VSProjectLoader 3.2.0.
log : Installing NUnit.Extension.NUnitProjectLoader 3.2.0.
log : Installing NUnit.Runners 3.2.0.
info : Committing restore...
log : Restore completed in 4352ms.
попытался запустить тесты с помощью
dotnet nunit
dotnet nunit-console
Не работает.
Итак, мои вопросы: как я буду называть бегуна? Или кто-то может предложить другую модульную систему тестирования, которая работает с текущей версией ядра dotnet?
Оцените любую помощь, которую вы можете предоставить. Спасибо!
Ответы
Ответ 1
Обновление 4: NUnit3TestAdapter v3.8 был выпущен, поэтому он больше не альфа.
Обновление 3:
С NUnit3TestAdapter v3.8.0-alpha1 теперь можно запускать тесты с помощью команды dotnet test
. Вам просто нужно иметь эти зависимости в тестовом проекте:
<PackageReference Include="nunit" Version="3.7.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.8.0-*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.*" />
Вы можете попробовать!
Обновление 2: Visual Studio 2017 и переход от project.json
в csproj
сделали тестовый адаптер dotnet-test-nunit
устаревшим, поэтому нам нужно было выпустить другой обновленный адаптер для запуска тестов .NET Core, Пожалуйста, смотрите Тестирование .NET Core с NUnit в Visual Studio 2017, если вы используете VS2017 и новую инструментальную среду .NET Core. См. Обновление ниже, если вы используете project.json
.
Обновление: NUnit теперь поддерживает dotnet test
, поэтому вам больше не нужно использовать NUnitLite. См. тестирование .NET Core RC2 и ASP.NET Core RC2 с использованием NUnit 3.
Консоль NUnit (и лежащий в основе NUnit Engine) не поддерживает пока еще не тестирует единичные тесты на ядре .NET. Надеюсь, мы получим эту поддержку в NUnit 3.4.
Тем временем вы можете использовать NUnitLite для переключения ваших тестов на самоисполняющийся тестовый бегун.
Я написал сообщение в блоге в Тестирование .NET Core с использованием NUnit 3. Краткое описание:
- Создайте приложение .NET Core Console для своего тестового проекта.
- Ссылка NUnit и NUnitLite из вашего тестового проекта. Вам не нужен бегун.
- Измените
main()
для выполнения модульных тестов.
Он должен выглядеть так:
using NUnitLite;
using System;
using System.Reflection;
namespace MyDnxProject.Test
{
public class Program
{
public int Main(string[] args)
{
var writter = new ExtendedTextWrapper(Console.Out);
new AutoRun(typeof(Program).GetTypeInfo().Assembly).Execute(args, writter, Console.In);
}
}
}
Для получения более полной информации см. мой пост в блоге.
Ответ 2
Сделал это как @Rob-Prouse с небольшими изменениями. Теперь он работает.
using System;
using System.Reflection;
using NUnitLite;
using NUnit.Common;
........
public class Program
{
public static void Main(string[] args)
{
var writter = new ExtendedTextWrapper(Console.Out);
new AutoRun(typeof(Program).GetTypeInfo().Assembly).Execute(args, writter, Console.In);
}
}
Ответ 3
Некоторые настройки для ответа, чтобы они скомпилировались.
using System;
using System.Reflection;
using NUnit.Common;
using NUnitLite;
namespace NetMQ.Tests
{
public static class Program
{
private static int Main(string[] args)
{
using (var writer = new ExtendedTextWrapper(Console.Out))
{
return new AutoRun(Assembly.GetExecutingAssembly())
.Execute(args, writer, Console.In);
}
}
}
}
Обратите внимание, что вам также может потребоваться преобразовать проект из библиотеки классов в консольное приложение.