Tests unitaires d’applications Xamarin.iOS

Ce document décrit comment créer des tests unitaires pour vos projets Xamarin.iOS. Les tests unitaires avec Xamarin.iOS s’effectuent à l’aide du framework Touch.Unit. Ce framework contient un outil Test Runner iOS, ainsi qu’une version modifiée de NUnit, appelée Touch.Unit, qui fournit un ensemble d’API couramment utilisées pour l’écriture de tests unitaires.

Configuration d’un projet de test dans Visual Studio pour Mac

Pour configurer un framework pour votre projet de tests unitaires, ajoutez simplement à votre solution un projet de type Projet de tests unitaires iOS. Pour ce faire, cliquez avec le bouton droit sur votre solution et sélectionnez Ajouter un > nouveau projet. Dans la liste, sélectionnez iOS > Test > Unified API > iOS Unit Tests Project (vous pouvez choisir C# ou F#).

Choisir C# ou F#

Les étapes précédentes créent un projet de base qui contient un programme Runner simple et qui fait référence au nouvel assembly MonoTouch.NUnitLite. Votre projet doit ressembler à ceci :

Projet dans le Explorateur de solutions

La classe AppDelegate.cs contient Test Runner, comme illustré ci-dessous :

[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;
    }
}

Notes

Le type de projet de tests unitaires iOS n’est pas disponible dans Visual Studio 2019 ou Visual Studio 2017 sur Windows.

Écriture de tests

Votre environnement de base est en place. Vous pouvez donc commencer à écrire votre première série de tests.

Pour écrire des tests, vous créez des classes auxquelles vous appliquez l’attribut [TestFixture]. Dans chaque classe TestFixture, vous devez appliquer l’attribut [Test] à chaque méthode devant être appelée par Test Runner. Les fixtures de test peuvent se trouver dans n’importe quel fichier dans votre projet de tests.

Pour démarrer rapidement, sélectionnez Ajouter/Ajouter un nouveau fichier et sélectionnez UnitTests dans le groupe Xamarin.iOS. Cela ajoute un fichier squelette qui contient un test réussi, un test échoué et un test ignoré, comme illustré ci-dessous :

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);
        }
    }
}

Exécution de vos tests

Pour exécuter ce projet dans votre solution, cliquez dessus avec le bouton droit et sélectionnez Déboguer l’élément ou Exécuter l’élément.

Test Runner affiche les tests qui sont enregistrés et vous permet de sélectionner individuellement les tests à exécuter.

Liste des tests inscritsUn texte individuel

Résultats de l’exécution

Vous pouvez exécuter les fixtures de test de votre choix en les sélectionnant dans les vues imbriquées, ou exécuter tous les tests en sélectionnant le bouton « Exécuter tout ». Si vous exécutez le test par défaut, celui-ci est censé inclure un test réussi, un test échoué et un test ignoré. Voici à quoi ressemble le rapport. Vous pouvez accéder directement aux détails des tests ayant échoué pour déterminer la cause de l’échec :

Capture d’écran montrant un exemple de rapport, écran Exécuteur de test.Capture d’écran montrant un exemple de rapport, écran Tests.Capture d’écran montrant un exemple de rapport, Écran de test avec status de test.

Vous pouvez également examiner les tests en cours d’exécution et leur état actuel dans la fenêtre Sortie de l’application dans votre environnement IDE.

Écriture de nouveaux tests

NUnitLite est une version modifiée de NUnit, appelée projet Touch.Unit. Il s’agit d’un framework de test léger pour .NET, basé sur les concepts NUnit et offrant une partie de ses fonctionnalités. Il utilise peu de ressources et s’exécute sur les plateformes limitées en ressources, telles que celles utilisées dans les environnements de développement incorporé et mobile. L’API NUnitLite est disponible dans Xamarin.iOS. Avec la structure de base fournie par le modèle de test unitaire, les méthodes de la classe Assert constituent votre point d’entrée principal.

En plus des méthodes de la classe Assert, la fonctionnalité de test unitaire est partagée par les espaces de noms suivants qui font partie de NUnitLite :