Archivo de la categoría: .Net Framework

Venciendo el miedo a las pruebas unitarias en .Net

Test Unitario

Otro día más por aquí, y hoy vengo a hablaros de las “Pruebas Unitarias”. Las pruebas unitarias son herramientas de testing para asegurar que nuestro código no cambia su funcionalidad pese a que hagamos cambios en él. Es decir, imaginemos que tenemos una librería matemática con unas operaciones simples:   Como se puede ver, es una clase muy simple de ver, entender, y probar su funcionamiento pero… ¿Que pasaría si una de estas operaciones básicas fallase por un cambio no comprobado? Pues probablemente, no pensaríamos que algo tan simple puede estar fallando… y eso que podemos haberlo cambiado incluso sin darnos cuenta… Para evitar ese tipo de fallos, existen este tipo de herramientas, cuya finalidad es que, ante unos datos de entrada conocidos, si todo va bien, tenemos que tener unos datos de salida que podemos predecir y comprobar. Pruebas Unitarias en Net Framework Como habitualmente, crearemos un proyecto de consola: Y en el introduciremos la clase ProcesadorMatematico de la que acabamos de hablar. Una vez hecho eso, vamos a crear un nuevo proyecto en la solución, pero esta vez de pruebas unitarias: Con esto, veremos que se nos crea un proyecto nuevo dentro de la solución, con una clase por… Leer más »

Inyección de Dependencias en .Net Framework

Inyeccion de dependencias

Un mes ya… y hoy vengo a hablaros de la “Inyección de Dependencias” (DI). La inyección de dependencias consiste de manera resumida en evitar el acoplamiento entre clases utilizando interfaces. Gracias esto, conseguimos que cada clase tenga una función única, facilitando así el mantenimiento y el soporte de nuestro código. Esto que puede parecer un poco lioso a simple vista, y puede parecer mucho trabajo, se puede conseguir fácilmente cambiando levemente nuestro patrón de diseño. Vamos a imaginar que tenemos una clase que lee unos datos desde una base de datos con Entity Framework (“Database First” o “Code First“), y los envía por email: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using PostInyeccion.Models; namespace PostInyeccion { class Program { static void Main(string[] args) { GeneradorInformes generador = new GeneradorInformes(); generador.GenerarInforme(); } } internal class GeneradorInformes { internal void GenerarInforme() { //Obtenemos los datos desde el contexto using (PostDbContext contexto = new PostDbContext()) { var profesores = contexto.Profesores.Include(x => x.Cursos) .ThenInclude(x => x.Alumnos).ToList(); //Trabajo de maquetacion //……. //Enviamos el correo var emailSender = new EmailSender(); var envioOK = emailSender.Enviar(profesores); if(!envioOK) { //Registramos el fallo en un log } } } } public class EmailSender { public… Leer más »

Haciendo fácil el acceso a datos con Entity Framework Core (Parte 2)

EFCore

Venimos con la segunda parte de “Haciendo fácil el acceso a datos con Entity Framework Core“. Esta vez, vamos a hacer el mismo ejemplo, pero con la opción “Code First”. Utilizando esta opción, vamos a generar nuestra base de datos mediante clases que relacionaremos entre ellas, así veremos las dos caras de la moneda. Modelo Tengamos el objetivo claro, mediante la opción “Code First” vamos a buscar conseguir un modelo como este: En el tenemos 2 relaciones 1 a muchos: Un profesor podrá impartir varios cursos. Cada curso puede tener varios alumnos. Creando la solución en Visual Studio En primer lugar, vamos a crear el proyecto, solo que esta vez, será un proyecto de consola Net Core: Paquetes Como la vez anterior, instalamos los paquetes de Entity Framework Core vía NuGet: En caso de querer hacerlo vía consola: PM->Install-Package Microsoft.EntityFrameworkCore -Version 2.1.3PM->Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.3 Y lo mismo para el proveedor de MySql O como siempre, por consola: PM->Install-Package Pomelo.EntityFrameworkCore.MySql -Version 2.1.2 Creando la solución en DotNet CLI Una de las ventajas de Net Core es que nos permite ejecutar sus acciones desde línea de comandos, con eso, conseguimos toda la funcionalidad en plataformas como Linux. En este caso, utilizaremos la Powershell…. Leer más »