unitarias - unit test c# ejemplo
Ejecutar pruebas NUnit en dotnet core (3)
Algunos ajustes a la respuesta, para hacerla compilar.
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);
}
}
}
}
Tenga en cuenta que también puede tener que convertir su proyecto de una biblioteca de clases a una aplicación de consola.
Estoy tratando de ejecutar pruebas unitarias para mi proyecto c # con núcleo dotnet. Estoy utilizando contenedor docker para el tiempo de ejecución.
Dockerfile
FROM microsoft/dotnet:0.0.1-alpha
RUN mkdir /src
WORKDIR /src
ADD . /src
RUN dotnet restore
"NUnit" y "NUnit.Runners" se han agregado a 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": { }
}
Ejecutar dotnet restore
con éxito con la siguiente salida
...
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.
Intenté ejecutar las pruebas con
dotnet nunit
dotnet nunit-console
No trabajo.
Entonces, mi pregunta es ¿cómo voy a llamar al corredor? ¿O alguien puede sugerir otro marco de prueba de unidad que funcione con la versión actual del núcleo dotnet?
Aprecie cualquier ayuda que pueda proporcionar. ¡Gracias!
Hizo lo que @ Rob-Prouse sugirió con cambios menores. Finalmente funciona ahora.
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);
}
}
Actualización 4: El NUnit3TestAdapter v3.8 ha sido lanzado, por lo que ya no es alfa.
Actualización 3: Con NUnit3TestAdapter v3.8.0-alpha1 ahora es posible ejecutar las pruebas usando el comando de dotnet test
. Solo necesita tener estas dependencias en su proyecto de prueba:
<PackageReference Include="nunit" Version="3.7.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.8.0-*" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.*" />
Puedes probarlo!
Actualización 2: Visual Studio 2017 y el cambio de project.json
a csproj
hizo que el adaptador de prueba dotnet-test-nunit
obsoleto, por lo que tuvimos que lanzar otro adaptador actualizado para ejecutar las pruebas Core de .NET. Consulte Pruebas de .NET Core con NUnit en Visual Studio 2017 si está utilizando VS2017 y la nueva herramienta .NET Core. Consulte la actualización a continuación si está utilizando project.json
.
Actualización: NUnit ahora tiene soporte para la dotnet test
, por lo que ya no tiene que usar NUnitLite. Consulte las pruebas de .NET Core RC2 y ASP.NET Core RC2 utilizando NUnit 3 .
La consola NUnit (y el motor NUnit subyacente) todavía no admiten la ejecución de pruebas unitarias en el núcleo .NET. Esperemos que tengamos ese apoyo en NUnit 3.4.
Mientras tanto, puede usar NUnitLite para cambiar sus pruebas a un corredor de prueba autoejecutable.
Escribí una publicación de blog sobre el proceso en Testing .NET Core usando NUnit 3 . Un resumen rápido es;
- Cree una aplicación .NET Core Console para su proyecto de prueba.
- NUnitLite NUnit y NUnitLite de su proyecto de prueba. No necesitas el corredor.
- Modificar
main()
para ejecutar las pruebas unitarias.
Debe tener un aspecto como este;
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);
}
}
}
Para obtener información más completa, ver mi blog .