Unit Testing using Xamarin Forms

Saludos estimados lectores, Bienvenidos al este dia 23/12/2020 del calendario de adviento "Xamarin" es un gusto compartir con ustedes un tema que siempre está ,aun si el developer o los que dirigen el proyecto asuman implementar; acompáñame a la siguiente escenario:

Juan(developer), Maria(QA), Pedro (Project Manager), Manuel(Patrocinador), Lucia(usuario de la App)..........

se desarrolla una aplicación heredada de una web ,la cual Pedro sigue al pie de la letra(scrum....), Maria siempre coordina con Lucia para que lo que le entregaron los analistas está probado(validaciones...), Juan entrega a Lucia, posterior sube a producción ..y adivinen que.. nadie se percató de que pasa si no hay red, o en una serie de optimización mobile falla la interfaz completa entre factores de incompatible web-mobile, para eso utilizamos el formato de pruebas unitarias , que se implementaran tan pronto se haya escrito un método, las misas actúa también como documentación de diseño y especificaciones funcionales.

Vale la cuña para C#, decir que esto de pruebas no solo es para xamarin, actualmente son muy usadas en apis y se sugiere que también lo apliquemos a nuestros proyectos de xamarin forms.

La mejor forma de escribir la prueba unitaria

  • La prueba unitaria debe ser independiente.
  • La cobertura de código del código de prueba debe ser superior al 85%.
  • La prueba unitaria debe ser simple, ya que no hay confusión sobre la exactitud del código de la prueba unitaria.
  • La ejecución de la prueba unitaria debe ser rápida y generar un resultado preciso.
  • Debe cubrir una condición de un método a la vez.
  • Debe haber un proyecto separado de redacción de la prueba de unidad.
  • La clase principal debe probarse primero y luego la clase secundaria.
  • El proyecto de prueba unitaria debe ser fácil de mantener y estar bien organizado.

Tenemos 2 marcos para escribir casos de prueba en C #,

  • Prueba de MS
  • NUnit

a continuación vamos a hacer un pequeño ejemplo, el cual tendremos un método llamado CalculatorMethod, y los pasos son los siguientes: 

1er paso: click derecho en la solución , mas agregar nuevo proyecto y seleccionamos proyecto de prueba unitaria y posterior le damos a siguiente.


2do paso: colocamos el nombre de nuestro proyecto de pruebas y posterior siguiente.


este es el método de prueba que tenemos..

 public class CalculatorMethod
    {
        public int Sumar(int x, int y)
        {
            return x + y;
        }
        public int Multiplicar(int x, int y)
        {
            return x * y;
        }

        public int Restar(int x, int y)
        {
            return x - y;
        }
        public int Dividir(int x, int y)
        {
            return x % y;
        }

Paso 3: instanciamos el método y en la creamos el método de pruebas TestMethodSumar en el hacemos una comparación de que el resultado sea el numero 10 que esperamos en nuestro método. el data notation = [TestMethod] es obligatorio para que nos lo reconozca como prueba, y para correr nos paramos en sima del método y le damos click derecho + ejecutar prueba; en caso que queramos debuggiar seleccionamos la opción debug.


y si quiero probar otro metodo, creo uno nuevo (recuerden el data notation [TestMethod] y en el panel izquierdo (explorador de pruebas) podemos observar el comportamiento de las pruebas que pasaron.


Conclusión: 

Como desarrolladores de Software nos comprende crear pruebas a cada método incluido en nuestro desarrollo, Assert nos proporciona a parte de AreEqual, si es null, not null, true... y un conjunto de respuestas esperadas en el campo común del desarrollo, así que colegas y/o lector gracias por llegar hasta aquí y desde ahora en adelante os animo a que ofrezcamos soluciones mas correctas de la mano de la buena practica de Unit Test.

Referencia:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/enterprise-application-patterns/unit-testing

https://www.c-sharpcorner.com/article/unit-test-in-c-sharp-with-xamarin-forms/







Comentarios

Entradas populares de este blog

Introducción a Xamarin Shell