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