J'essaie d'exécuter des tests unitaires pour mon projet c # avec le noyau de dotnet. J'utilise un conteneur Docker pour l'exécution.
Dockerfile
FROM Microsoft/dotnet:0.0.1-alpha
RUN mkdir /src
WORKDIR /src
ADD . /src
RUN dotnet restore
"NUnit" et "NUnit.Runners" ont été ajoutés à 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": { }
}
Exécutez dotnet restore
avec le résultat suivant
...
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.
essayé de faire les tests avec
dotnet nunit
dotnet nunit-console
Pas travailler.
Alors ma question est: comment vais-je appeler le coureur? Ou quelqu'un peut-il suggérer un autre framework de test unitaire qui fonctionne avec la version actuelle de dotnet core?
Appréciez toute aide que vous pouvez fournir. Je vous remercie!
Mise à jour 4: Le NUnit3TestAdapter v3.8 a été publié, il n'est donc plus alpha.
Mise à jour 3: Avec NUnit3TestAdapter v3.8.0-alpha1 il est maintenant possible d'exécuter les tests à l'aide de la commande dotnet test
. Il vous suffit d’avoir ces dépendances dans votre projet de test:
<PackageReference Include="nunit" Version="3.7.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.8.0-*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.*" />
Vous pouvez l'essayer!
Update 2: Visual Studio 2017 et le passage de project.json
à csproj
ont rendu l'adaptateur de test dotnet-test-nunit
obsolète. Nous avons donc dû publier un autre adaptateur mis à jour pour exécuter les tests .NET Core. Veuillez consulter Test de .NET Core avec NUnit dans Visual Studio 2017 si vous utilisez VS2017 et le nouvel outil .NET Core. Consultez la mise à jour ci-dessous si vous utilisez project.json
.
Update: NUnit prend désormais en charge dotnet test
, de sorte que vous n'êtes plus obligé d'utiliser NUnitLite. Voir Test de .NET Core RC2 et ASP.NET Core RC2 avec NUnit 3 .
La console NUnit (et le moteur NUnit sous-jacent) ne prend pas encore en charge l'exécution de tests unitaires sur le noyau .NET. Espérons que nous obtiendrons ce support dans NUnit 3.4.
En attendant, vous pouvez utiliser NUnitLite pour passer vos tests à un programme d'exécution de tests à exécution automatique.
J'ai écrit un article de blog sur le processus à Test de .NET Core avec NUnit 3 . Un résumé rapide est;
main()
pour exécuter les tests unitaires.Ça devrait ressembler à ça;
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);
}
}
}
Pour des informations plus complètes, voir mon blog .
Fait comme @ Rob-Prouse suggéré avec des changements mineurs. Cela fonctionne enfin maintenant.
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);
}
}
Quelques ajustements à la réponse, pour le faire compiler.
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);
}
}
}
}
Notez que vous devrez peut-être également convertir votre projet d'une bibliothèque de classes en application console.