.Net Core
Instalación
Se debe descargar el .Net SDK y un editor de código fuente, para este caso Visual Studio Code donde se instalara la extensión C#
Creación de aplicación de consola
Se debe crear una carpeta con el nombre del proyecto para este caso _HelloWorldProject _y abrir dicha carpeta con visual studio code.
Para inicializar un proyecto C# en la terminal integrada (View/Integrated Terminal) de visual studio code ejecutamos
dotnet new console
Para compilar:
dotnet restore
Para ejecutar:
dotnet run
Debug
- Abrir el archivo Program.cs y al ser la primera vez nos preguntara si deseamos descargar los complementos necesarios para hacer debug y seleccionamos si.

- Reiniciamos vs code para que carguen los nuevos complemento
- En el código se pone un punto de interrupción donde deseamos hacer debug, en el panel izquierdo de vs code seleccionamos debug, seleccionamos .Net Core Launch (console) y ejecutar

Pruebas unitarias con xUnit
Vamos a crear un proyecto de librería de clases para validar si un número es primo o no y un proyecto de pruebas para validar esta funcionalidad.
Se debe crear una carpeta para este caso xunit-testing y la abrimos con vs code
Para crear una nueva solución en la terminal integrada ejecutar:
dotnet new sln- Dentro de la solución crear una nueva carpeta para el proyecto fuente de las pruebas. Para este caso PrimeService y navegamos a ella en la consola
mkdir PrimeService cd PrimeServicePara crear una nueva librería se debe ejecutar:
dotnet new classlib- Renombrar la clase creada por PrimeService y para usar el desarrollo orientado a pruebas (TDD) se debe crear una implementación de error de la siguiente manera:
using System; namespace Prime.Services { public class PrimeService { public bool IsPrime(int candidate) { throw new NotImplementedException("Please create a test first"); } } }Cambiar nuevamente al directorio de la solución.
cd ..Agregamos el proyecto de biblioteca de clases creado a la solución.
dotnet sln add ./PrimeService/PrimeService.csprojAhora se debe crear el proyecto de pruebas en el cual crearemos una nueva carpeta. Para este caso PrimeService.Tests
mkdir PrimeService.Tests cd PrimeService.TestsSe debe crear un proyecto nuevo de pruebas con xunit.
dotnet new xunitSe debe agregar la referencia del proyecto de clases.
dotnet add reference ../PrimeService/PrimeService.csprojCambiar nuevamente al directorio de la solución.
cd ..Agregar el proyecto de pruebas a la solución.
dotnet sln add ./PrimeService.Tests/PrimeService.Tests.csprojEl enfoque de TDD requiere la escritura de una prueba con errores, después se valida y luego se repite el proceso. Para realizar este proceso, del proyecto de pruebas eliminar la clase UnitTest1 y creamos un archivo PrimeService_IsPrimeShould.cs
using Xunit; using Prime.Services; namespace Prime.UnitTests.Services { public class PrimeService_IsPrimeShould { private readonly PrimeService _primeService; public PrimeService_IsPrimeShould() { _primeService = new PrimeService(); } //El atributo [Fact] indica un método de prueba que el ejecutor de pruebas ejecuta. [Fact] public void ReturnFalseGivenValueOf1() { var result = _primeService.IsPrime(1); Assert.False(result, "1 no es primo"); //Espero que me retorne false } } }En PrimeService.Tests ejecutar la prueba
dotnet testLa prueba produce un error ya que no se ha creado la implementación. Para esto se debe modificar la función IsPrime de PrimeService.
public bool IsPrime(int candidate){ if (candidate < 2) return false; for (var divisor = 2; divisor <= Math.Sqrt(candidate); divisor++) { if (candidate % divisor == 0) return false; } return true; }Ejecutamos la prueba de nuevo y ahora debe pasar.
Para agregar mas características modificamos la clase de pruebas PrimeService_IsPrimeShould.cs
[Theory] //Indica que ejecuta un conjunto de pruebas que ejecutan el mismo código [InlineData(-1)] //Especifica valores para las entradas [InlineData(0)] [InlineData(1)] public void ReturnFalseGivenValuesLessThan2(int value) { var result = _primeService.IsPrime(value); Assert.False(result, $"{value} no es primo"); } [Theory] [InlineData(7)] public void ReturnTrueGivenPrimesLessThan10(int value) { var result = _primeService.IsPrime(value); Assert.True(result, $"{value} es primo"); }Ejecutar la prueba y todas deben de pasar.