Подтвердить что ты не робот

Запуск тестов 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?

Оцените любую помощь, которую вы можете предоставить. Спасибо!

4b9b3361

Ответ 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);
            }
        }
    }
}

Обратите внимание, что вам также может потребоваться преобразовать проект из библиотеки классов в консольное приложение.