it-swarm.com.de

Führen Sie NUnit-Tests im Dotnet-Core aus

Ich versuche, Unit-Tests für mein C # -Projekt mit Dotnet-Core auszuführen. Ich benutze Docker-Container zur Laufzeit. 

Dockerfile

FROM Microsoft/dotnet:0.0.1-alpha
RUN mkdir /src
WORKDIR /src
ADD . /src
RUN dotnet restore

"NUnit" und "NUnit.Runners" wurden in project.json hinzugefügt

"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": { }
}

Führen Sie dotnet restore erfolgreich mit der folgenden Ausgabe aus

...
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.

versuchte die Tests mit auszuführen 

dotnet nunit

dotnet nunit-console

Nicht arbeiten. 

Meine Fragen lautet also, wie rufe ich den Läufer an? Oder kann jemand ein anderes Gerätetest-Framework vorschlagen, das mit der aktuellen Version des Dotnet-Core funktioniert?

Schätzen Sie jede Hilfe, die Sie leisten können. Vielen Dank!

25
Awakening Byte

Update 4: Der NUnit3TestAdapter v3.8 wurde veröffentlicht und ist daher kein Alpha mehr.

Update 3: Mit NUnit3TestAdapter v3.8.0-alpha1 ist es jetzt möglich, die Tests mit dem Befehl dotnet test auszuführen. Sie brauchen nur diese Abhängigkeiten in Ihrem Testprojekt:

<PackageReference Include="nunit" Version="3.7.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.8.0-*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.*" />

Sie können es ausprobieren!

Update 2: Visual Studio 2017 und die Umstellung von project.json auf csproj machten den dotnet-test-nunit-Testadapter überflüssig. Daher mussten wir einen weiteren aktualisierten Adapter veröffentlichen, um .NET Core-Tests auszuführen. Siehe .NET Core mit NUnit in Visual Studio 2017 testen wenn Sie VS2017 und das neue .NET Core-Tool verwenden. Siehe untenstehendes Update, wenn Sie project.json verwenden.

Update: NUnit unterstützt jetzt dotnet test, sodass Sie NUnitLite nicht mehr verwenden müssen. Siehe Testen von .NET Core RC2 und ASP.NET Core RC2 mit NUnit 3 .


Die NUnit-Konsole (und die zugrunde liegende NUnit Engine) unterstützen noch nicht die Ausführung von Unit-Tests mit .NET Core. Hoffentlich erhalten wir diese Unterstützung in NUnit 3.4.

In der Zwischenzeit können Sie NUnitLite verwenden, um Ihre Tests auf einen sich selbst ausführenden Testläufer umzustellen. 

Ich habe einen Blogbeitrag über den Prozess bei Testing .NET Core mit NUnit 3 geschrieben. Eine kurze Zusammenfassung ist;

  1. Erstellen Sie eine .NET Core Console-Anwendung für Ihr Testprojekt.
  2. Referenz NUnit und NUnitLite aus Ihrem Testprojekt. Sie brauchen den Läufer nicht.
  3. Ändern Sie main(), um die Komponententests auszuführen.

Es sollte so aussehen;

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);
    }
  }
}

Ausführlichere Informationen finden Sie unter meinem Blogbeitrag .

27
Rob Prouse

Habe als @ Rob-Prouse mit geringfügigen Änderungen vorgeschlagen. Es funktioniert jetzt endlich.

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
Awakening Byte

Einige Änderungen an der Antwort, damit sie kompiliert werden.

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);
            }
        }
    }
}

Beachten Sie, dass Sie möglicherweise auch Ihr Projekt von einer Klassenbibliothek in eine Konsolenanwendung konvertieren müssen.

0
Drew Noakes