Pruebas unitarias de Xamarin.iOS

En este documento se describe cómo se crean pruebas unitarias para los proyectos de Xamarin.iOS. Las pruebas unitarias con Xamarin.iOS se realizan mediante el marco Touch.Unit, que incluye tanto un ejecutor de pruebas de iOS como una versión modificada de NUnit denominada Touch.Unit, que proporciona un conjunto conocido de API para escribir pruebas unitarias.

Configuración de un proyecto de prueba en Visual Studio para Mac

Para configurar un marco de pruebas unitarias para el proyecto, lo único que tiene que hacer es agregar a la solución un proyecto de tipo proyecto de pruebas unitarias de iOS. Para ello, haga clic con el botón derecho en la solución y seleccione Agregar >Agregar nuevo proyecto. En la lista, seleccione iOS > Pruebas > Unified API > Proyecto de pruebas unitarias de iOS (puede elegir C# o F#).

Choose either C# or F#

Con los pasos anteriores se crea un proyecto básico que contiene un programa básico ejecutor y que hace referencia al nuevo ensamblado MonoTouch.NUnitLite; el proyecto tendrá este aspecto:

The project in the Solution Explorer

La clase AppDelegate.cs contiene el ejecutor de pruebas y tiene el siguiente aspecto:

[Register ("AppDelegate")]
public partial class AppDelegate : UIApplicationDelegate
{
    UIWindow window;
    TouchRunner runner;

    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        // create a new window instance based on the screen size
        window = new UIWindow (UIScreen.MainScreen.Bounds);
        runner = new TouchRunner (window);

        // register every tests included in the main application/assembly
        runner.Add (System.Reflection.Assembly.GetExecutingAssembly ());

        window.RootViewController = new UINavigationController (runner.GetViewController ());

        // make the window visible
        window.MakeKeyAndVisible ();

        return true;
    }
}

Nota:

El tipo de proyecto de prueba unitaria de iOS no está disponible en Visual Studio 2019 o Visual Studio 2017 en Windows.

Escritura de pruebas

Ahora que tiene el shell básico, debería escribir el primer conjunto de pruebas.

Las pruebas se escriben mediante la creación de clases que tienen aplicado el atributo [TestFixture]. Dentro de cada clase TestFixture, debe aplicar el atributo [Test] a cada método al que quiera que invoque el ejecutor de pruebas. Los accesorios de prueba reales pueden encontrarse en cualquier archivo del proyecto de pruebas.

Para empezar a trabajar rápidamente, seleccione Agregar/Agregar nuevo archivo y, luego, seleccione el grupo de Xamarin.iOS UnitTests. Esto agregará un archivo de esquema con una prueba correcta, otra incorrecta y una omitida, con el siguiente aspecto:

using System;
using NUnit.Framework;

namespace Fixtures {

    [TestFixture]
    public class Tests {

        [Test]
        public void Pass ()
        {
                Assert.True (true);
        }

        [Test]
        public void Fail ()
        {
                Assert.False (true);
        }

        [Test]
        [Ignore ("another time")]
        public void Ignore ()
        {
                Assert.True (false);
        }
    }
}

Ejecución de las pruebas

Para ejecutar este proyecto en la solución, haga clic en él con el botón derecho y seleccione Debug Item (Depurar elemento) o Ejecutar elemento.

El ejecutor de pruebas permite ver qué pruebas se registran y seleccionar individualmente las pruebas que se pueden ejecutar.

The list of registered testsAn individual text

The run results

Puede ejecutar accesorios de prueba individuales si selecciona el accesorio de texto en las vistas anidadas o puede ejecutar todas las pruebas con "Run Everything (Ejecutar todo)". Si ejecuta la prueba predeterminada que se supone que incluye una prueba correcta, una incorrecta y una omitida. Este es el aspecto del informe, y puede ir directamente a las pruebas incorrectas y obtener más información sobre el error:

Screenshot shows a sample report, Test Runner screen.Screenshot shows a sample report, Tests screen.Screenshot shows a sample report, Test screen with test status.

También puede ir a la ventana Application Output (Resultado de aplicación) del IDE para ver qué pruebas se ejecutan y su estado actual.

Escritura de nuevas pruebas

NUnitLite es una versión modificada del proyecto NUnit denominado Touch.Unit. Es un marco de pruebas ligero para .NET basado en las ideas de NUnit que proporciona un subconjunto de sus características. Usa recursos mínimos y se ejecuta en plataformas de recursos restringidos como las usadas en el desarrollo móvil e incrustado. La API de NUnitLite está disponible en Xamarin.iOS. Con el esquema básico que proporciona la plantilla de pruebas unitarias, el punto de entrada principal son los métodos de la clase Assert.

Además de los métodos de la clase Assert, la funcionalidad de pruebas unitarias se divide en los siguientes espacios de nombre que forman parte de NUnitLite: