UITests + ApprovalTests en Xamarin Forms

¡Hola!
El otro día pude ver (a grandes rasgos) el funcionamiento general de los test de UI en Xamarin Forms. En cuanto vi la sentencia app.Screenshot(“Welcome screen”) automáticamente me acordé de ApprovalTests y cómo se generaban los test de aprobación para aplicaciones Windows Forms o WPF que, en esencia, se basa en hacer una captura de pantalla del formulario/ventana/control correspondiente y comprobarlo con la captura que previamente hemos aprobado. Si no sabes cómo funciona la librería ApprovalTest hace un tiempo escribí algunas entradas sobre ella (1, 2 y 3).
Continúa leyendo UITests + ApprovalTests en Xamarin Forms

DependencyService vitaminado en Xamarin Forms

¡Hola!
Si has trabajado con Xamarin Forms seguro que has utilizado en algún momento DependencyService. Este servicio nos permite poder llamar a funciones de las diferentes plataformas (iOS, Android…) desde nuestro código compartido; típicamente crearemos una interfaz en nuestro proyecto compartido y las implementaciones correspondientes en las diferentes plataformas que serán decoradas con el atributo Dependency (aquí puedes ver una estupenda explicación). Continúa leyendo DependencyService vitaminado en Xamarin Forms

Attached Properties en Xamarin Forms

¡Hola!
Desde hace ya varios meses trabajando con Xamarin Forms y antes con WPF, nunca me había dado cuenta de lo extraño que era cómo se definen las filas y columnas de un elemento dentro de un Grid. Con extraño me refiero a que, seguramente porque lo hacía de forma natural, no me había dado cuenta de que la propiedad Grid.Row (entre otras) no está presente en todos los controles que utilizamos… me refiero a esto: Continúa leyendo Attached Properties en Xamarin Forms

Ejemplo de uso de DynamicProxy

¡Hola!
Hace unos días vimos un par de entradas (ésta y ésta) sobre las características y usos básicos de los proxys a través de la libería DynamicProxy. Hoy vamos a ver un pequeño proyecto en el que utilizaremos esta libería para medir tiempos. Continúa leyendo Ejemplo de uso de DynamicProxy

WeakReference en C#

¡Hola!
Hoy vamos a ver cómo podemos utilizar la clase WeakReference para obtener referencias débiles de nuestros objetos. Vamos a ver qué son las referencias fuertes y débiles, algunas cosas sobre el recolector de basura y cómo afecta a nuestras referencias. Antes que nada quiero avisar que es posible que algún concepto no sea correcto del todo pero en conjunto creo que es una visión más o menos válida. Sin más preámbulos, ¡vamos allá! Continúa leyendo WeakReference en C#

Hook, Selector, Mixin y más con DynamicProxy

¡Hola!
Después de ver qué son y cómo podemos crear proxys con DynamicProxy, hoy vamos a ver algunas características que nos ofrece para poder mejorar estos proxys, separar ciertas responsabilidades y alguna cosa que se quedó pendiente en el anterior post. Vamos a ello.
Continúa leyendo Hook, Selector, Mixin y más con DynamicProxy

Creando proxys con Castle DynamicProxy

¡Hola!
En esta entrada vamos a ver algunas cosas básicas sobre proxys y cómo crearlos utilizando un estupenda librería llamada DynamicProxy. Esta librería forma parte del proyecto Castle que incluye, además de DynamicProxy, otras potentes librerías como el contenedor de IoC Windsor. Volviendo a DynamicProxy, seguro que consciente o inconscientemente la has utilizado muchas veces en alguna librería o framework que hayas incluido en algunos de tus proyectos.. en este post lo veremos. Continúa leyendo Creando proxys con Castle DynamicProxy

AutoMocker. Desacoplando los tests de los constructores

¡Hola!
En las dos anteriores entradas (aquí y aquí), hemos conocido un poco la herramienta Autofixture y cómo nos ayuda principalmente a aislarnos lo máximo posible en la etapa Arrange de los test y facilitar así nuestras refactorizaciones de código. Hoy vamos a ver otra herramienta similar, pero mucho más sencilla (y menos potente), AutoMocker. Está disponible directamente desde NuGet. Continúa leyendo AutoMocker. Desacoplando los tests de los constructores

Autofixture. Customización de Fixtures

¡Hola!
El otro día estuvimos viendo cómo podemos utilizar Autofixture para intentar mejorar la etapa de Arrange de nuestros tests y hacerlos más mantenibles; además, por si no fuese poco, también vimos cómo aumenta nuestra productividad ya que tenemos que escribir menos código, o más bien, menos código que no está directamente relacionado con el objetivo del test, por ejemplo, para probar x funcionalidad necesitamos una instancia de y, nos da igual su estado, simplemente la necesitamos, y ahí es donde Autofixture nos puede ayudar. Esto último no siempre es así, es muy posible que en ciertos test queramos crear instancias en un estado concreto ya sea porque es lo que estamos probando o porque está directamente relacionado, y para ello existen técnicas como factorías o builders (en el anterior post vimos algunas técnicas), pero Autofixture también nos permite personalizar cómo creamos los objetos. Continúa leyendo Autofixture. Customización de Fixtures