Test de aprobación con ApprovalTests. Conceptos básicos

¡Hola!
El otro día haciendo la kata Gilded Rose (una de las más interesantes que he hecho), me encontré con una curiosa herramienta llamada ApprovalTests. Esta librería, que tiene ya unos cuantos años, nos ayuda a escribir test de aprobación. Este tipo de test los utilizaremos típicamente cuando nuestros Asserts sean muy costosos o queramos refactorizar código (como en la kata). Antes que nada, os recomiendo dejar de leer esta entrada y leer estas otras del blog Koalite que son mucho más interesantes (y con mejor criterio), y si no conoces el blog, ya puedes añadirlo a tus marcadores. Continúa leyendo Test de aprobación con ApprovalTests. Conceptos básicos

Decompilando async/await

¡Hola!
Como bien dice el título de la entrada, vamos a echar un vistazo al código que se genera cuando utilizamos async/await. Siempre hemos escuchado que async/await es azúcar sintáctico y que genera un montón de código; pues voy a intentar explicar aprender qué es lo que hace el código que se genera cuando utilizamos async/await, a ver si me sale.
Continúa leyendo Decompilando async/await

IEnumerator, IEnumerable y otras hierbas

¡Hola!
El otro día en el trabajo salió el tema de cuál es la diferencia entre IEnumerable e IList (entre otros) y, creyendo que tenía clara la respuesta, me di cuenta de que no tanto. Sí sabía que, por ejemplo, IList implementa IEnumerable, y que en un IEnumerable no se puede acceder por índice a un elemento, sino que debemos recorrerlo. Es un momento perfecto para escribir un post y aclarar mis ideas. En concreto vamos a ver las interfaces IEnumerator, IEnumerable, ICollection e IList, empecemos (espero no extenderme demasiado). Continúa leyendo IEnumerator, IEnumerable y otras hierbas

Json.NET y el misterio de ImageFormat

¡Hola!
El otro día me ocurrió que, deserializando con Json.NET un objeto que contenía una propiedad ImageFormat, de forma cuasi mágica se serializaba/deserializaba correctamente. En concreto necesitaba hacer esto para una pequeña aplicación donde se generan iconos de diferentes tamaños y, cuando ya estaba pensando en hacer un JsonConverter, me di cuenta de que no era necesario.
Continúa leyendo Json.NET y el misterio de ImageFormat

Migrando de MSTest a xUnit. Test parametrizados

¡Hola!
Llegamos al último post de la serie Migrando de MSTest a xUnit. En el primero vimos los cambios más básicos y cómo cambia el ciclo de vida de los test, en el segundo los principales atributos y esta vez toca ver los test parametrizados. Yo, personalmente, nunca había utilizado este tipo de test hasta que hace unos días, haciendo la kata Roman Numerals Kata los utilicé por primera vez.
Continúa leyendo Migrando de MSTest a xUnit. Test parametrizados

Generar diferentes tamaños de imagen en Xamarin Forms

¡Hola!
Cuando tenemos que crear las imágenes para una aplicación Xamarin, nos encontramos con que tenemos varias resoluciones que generar. En la siguiente lista se muestran las resoluciones y un ejemplo de tamaño:
Android
LDPI: x0.75 (36×36)
MDPI: x1.0 (Tamaño base) (48×48)
HDPI: x1.5 (72×72)
XHDPI: x2.0 (96×96)
XXHDPI: x3.0 (144×144)
XXXHDPI: x4.0 (192×192)
iOS
Tamaño base: x1 (48×48)
@2: x2 (96×96)
@3: x3 (144×144)
Continúa leyendo Generar diferentes tamaños de imagen en Xamarin Forms

Migrando de MSTest a xUnit. Atributos

¡Hola!
Después de ver algunas cosas básicas y cómo cambia el ciclo de vida de los test, hoy vamos a echar un vistazo a los atributos básicos y cómo cambian de MSTest a xUnit. Antes de que se me olvide, Francisco (un crack del testing) me comentó que por lo visto ha salido ya hace unos meses una nueva versión de MSTest, MSTest V2 y yo sin saberlo, así que es posible que algunas cosas que haya comentado o vaya a comentar hayan cambiado con esta nueva versión :(, aunque es una buena noticia que MSTest siga evolucionando.
Continúa leyendo Migrando de MSTest a xUnit. Atributos

Migrando de MSTest a xUnit

¡Hola!
Pues como bien dice el título, vamos a empezar a ver una serie de entradas para intentar pasar de MSTest a xUnit, viendo qué cosas cambian y por dónde empezar.
La primera pregunta que nos deberíamos hacer es, ¿deberíamos cambiar a xUnit? Aquí la respuesta es (como en casi todo), depende. En un proyecto ya iniciado en el que tengamos todos nuestros test con MSTest y no tengamos necesidades imperiosas para cambiar, por ejemplo que necesitemos sí o sí alguna característica de xUnit imposible de hacer con MSTest (imposible.. seguro¿?), es muy probable no merezca la pena el cambio. En un proyecto nuevo la cosa cambia; parece que xUnit (o NUnit) tienen más aprobación que MSTest, cuando digo más aprobación me refiero a que es lo que se aconseja por parte de la comunidad. Y no es excusa que el equipo de desarrollo siempre haya trabajado con MSTest porque el cambio es bastante natural. En cualquier caso, si no tienes necesidades muy complejas, seguramente con MSTest vayas servido. Al final lo importante es hacer test, independientemente del framework que utilicemos, porque nos ayudan a desarrollar aplicaciones más robustas, más fácil de mantener y extender, nos proporcionan documentación, etc. Continúa leyendo Migrando de MSTest a xUnit

Deserializar propiedades JSON dentro de un JSON

¡Hola!
El otro día se dio el caso de que tuve que deserializar un JSON dentro de un JSON, es decir, dado un JSON, una de las propiedades es un string que contiene otro JSON. No tiene pinta de que sea una gran forma de crear JSON, pero cuando se da el caso hay que deserializarlos 🙂
Continúa leyendo Deserializar propiedades JSON dentro de un JSON

Ninject. Crear factorías III

¡Hola!
Después de dar un repaso general a las diferentes características de las factorías de Ninject (aquí y aquí), vamos a ver un caso que se acerca más al mundo real. Vamos a ver cómo crear una factoría para generar comandos basado en el nombre del tipo del comando concreto. ¿Suena un poco lioso? Es muy sencillo, lo vemos a continuación.
Continúa leyendo Ninject. Crear factorías III