¿Te gustaría aprender Frameworks .NET Empresariales?
Tenemos los cursos que necesitas. ¡Haz clic aquí!
NUnit es un framework open source para pruebas unitarias de sistemas realizados con la plataforma Microsof.NET. Consiste en un conjunto de meta atributos y aserciones que permiten probar los métodos de una clase especificada. Fue desarrollado entero en C#, y pertenece a los llamados xUnit que son todos aquellos frameworks de pruebas heredados de JUnit y que por tanto, siguen las normas marcadas por el mismo.
Este artículo trata sobre la prueba de un proyecto .NET Core. Antes de iniciar el proyecto veamos los prerrequisitos que necesita tener en cuanto a instalaciones de programas.
Prerrequisitos
- .NET Core 2.1 SDK o versiones posteriores.
- Un editor de texto o un editor de código de su elección.
Creando el proyecto fuente
Abra una ventana de shell. Cree un directorio llamado unit-testing-using-nunit para contener la solución. Dentro de este nuevo directorio, ejecute el siguiente comando para crear un nuevo archivo de solución para la biblioteca de clases y el proyecto de prueba:CLI de .NET CoreDupdo
dotnet new sln
A continuación, cree un directorio PrimeService . El siguiente esquema muestra el directorio y la estructura de archivos hasta ahora:ConsolaDupdo
/unit-testing-using-nunit
unit-testing-using-nunit.sln
/PrimeService
Convierta PrimeService en el directorio actual y ejecute el siguiente comando para crear el proyecto de origen:CLI de .NET CoreDupdo
dotnet new classlib
Cambie el nombre de Class1.cs a PrimeService.cs . Creas una implementación fallida de la PrimeService
clase:C#Dupdo
using System;
namespace Prime.Services
{
public class PrimeService
{
public bool IsPrime(int candidate)
{
throw new NotImplementedException("Please create a test first.");
}
}
}
Vuelva a cambiar el directorio al directorio unit-testing-using-nunit . Ejecute el siguiente comando para agregar el proyecto de biblioteca de clases a la solución:CLI de .NET CoreDupdo
dotnet sln add PrimeService/PrimeService.csproj
Creando el proyecto de prueba
A continuación, cree el directorio PrimeService.Tests . El siguiente esquema muestra la estructura del directorio:ConsolaDupdo
/unit-testing-using-nunit
unit-testing-using-nunit.sln
/PrimeService
Source Files
PrimeService.csproj
/PrimeService.Tests
Convierta el directorio PrimeService.Tests en el directorio actual y cree un nuevo proyecto usando el siguiente comando:CLI de .NET CoreDupdo
dotnet new nunit
El comando dotnet new crea un proyecto de prueba que usa NUnit como biblioteca de prueba. La plantilla generada configura el corredor de prueba en el archivo PrimeService.Tests.csproj :XMLDupdo
<ItemGroup>
<PackageReference Include="nunit" Version="3.13.1" />
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.1" />
</ItemGroup>
El proyecto de prueba requiere otros paquetes para crear y ejecutar pruebas unitarias. dotnet new
en el paso anterior se agregó el SDK de prueba de Microsoft, el marco de prueba NUnit y el adaptador de prueba NUnit. Ahora, agregue la PrimeService
biblioteca de clases como otra dependencia al proyecto. Usa el dotnet add reference
comando:CLI de .NET CoreDupdo
dotnet add reference ../PrimeService/PrimeService.csproj
El siguiente esquema muestra el diseño de la solución final:ConsolaDupdo
/unit-testing-using-nunit
unit-testing-using-nunit.sln
/PrimeService
Source Files
PrimeService.csproj
/PrimeService.Tests
Test Source Files
PrimeService.Tests.csproj
Ejecute el siguiente comando en el directorio unit-testing-using-nunit :CLI de .NET CoreDupdo
dotnet sln add ./PrimeService.Tests/PrimeService.Tests.csproj
Creando la primera prueba
Escribe una prueba fallida, la aprueba y luego repite el proceso. En el directorio PrimeService.Tests , cambie el nombre del archivo UnitTest1.cs a PrimeService_IsPrimeShould.cs y reemplace todo su contenido con el siguiente código:C#Dupdo
using NUnit.Framework;
using Prime.Services;
namespace Prime.UnitTests.Services
{
[TestFixture]
public class PrimeService_IsPrimeShould
{
private PrimeService _primeService;
[SetUp]
public void SetUp()
{
_primeService = new PrimeService();
}
[Test]
public void IsPrime_InputIs1_ReturnFalse()
{
var result = _primeService.IsPrime(1);
Assert.IsFalse(result, "1 should not be prime");
}
}
}
El [TestFixture]
atributo denota una clase que contiene pruebas unitarias. El [Test]
atributo indica que un método es un método de prueba.
Guarde este archivo y ejecútelo dotnet test
para crear las pruebas y la biblioteca de clases y luego ejecute las pruebas. El corredor de pruebas NUnit contiene el punto de entrada del programa para ejecutar sus pruebas. dotnet test
inicia el corredor de prueba utilizando el proyecto de prueba unitaria que ha creado.
Tu prueba falla. Aún no ha creado la implementación. Haga que esta prueba pase escribiendo el código más simple de la PrimeService
clase que funcione:C#Dupdo
public bool IsPrime(int candidate)
{
if (candidate == 1)
{
return false;
}
throw new NotImplementedException("Please create a test first.");
}
En el directorio unit-testing-using-nunit , dotnet test
vuelva a ejecutar . El dotnet test
comando ejecuta una compilación para el PrimeService
proyecto y luego para el PrimeService.Tests
proyecto. Después de construir ambos proyectos, ejecuta esta única prueba. Pasó.
Añadiendo más funciones
Ahora que ha pasado una prueba, es hora de escribir más. Hay algunos otros casos simples para números primos: 0, -1. Puede agregar nuevas pruebas con el [Test]
atributo, pero eso rápidamente se vuelve tedioso. Hay otros atributos de NUnit que le permiten escribir un conjunto de pruebas similares. Un [TestCase]
atributo se usa para crear un conjunto de pruebas que ejecutan el mismo código pero tienen diferentes argumentos de entrada. Puede utilizar el [TestCase]
atributo para especificar valores para esas entradas.
En lugar de crear nuevas pruebas, aplique este atributo para crear una única prueba basada en datos. La prueba basada en datos es un método que prueba varios valores menores que dos, que es el número primo más bajo:C#Dupdo
[TestCase(-1)]
[TestCase(0)]
[TestCase(1)]
public void IsPrime_ValuesLessThan2_ReturnFalse(int value)
{
var result = _primeService.IsPrime(value);
Assert.IsFalse(result, $"{value} should not be prime");
}
Ejecutar dotnet test
y dos de estas pruebas fallan. Para que todas las pruebas pasen, cambie la if
cláusula al principio del Main
método en el archivo PrimeService.cs :C#Dupdo
if (candidate < 2)
Continúe iterando agregando más pruebas, más teorías y más código en la biblioteca principal. Tienes la versión terminada de las pruebas y la implementación completa de la biblioteca .
Ha creado una pequeña biblioteca y un conjunto de pruebas unitarias para esa biblioteca. Ha estructurado la solución para que agregar nuevos paquetes y pruebas sea parte del flujo de trabajo normal. Ha concentrado la mayor parte de su tiempo y esfuerzo en resolver los objetivos de la aplicación.
Te esperamos en los siguientes artículos en donde hablaremos más acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.
¿Te gustaría aprender Frameworks .NET Empresariales?
Tenemos los cursos que necesitas. ¡Haz clic aquí!