Komponententests bei Xamarin.iOS-Apps

Dieses Dokument beschreibt, wie Sie Komponententests für Ihre Xamarin.iOS-Projekte erstellen. Komponententests mit Xamarin.iOS werden mithilfe des Touch.Unit-Frameworks durchgeführt, das sowohl einen iOS Test Runner als auch eine geänderte Version von NUnit mit dem Namen Touch.Unit enthält, die eine Reihe vertrauter APIs zum Schreiben von Komponententests bietet.

Einrichten eines Testprojekts in Visual Studio für Mac

Sie müssen Ihrer Projektmappe ein Projekt des Typs iOS-Komponententestprojekt hinzufügen, um ein Komponententestframework für Ihr Projekt einzurichten. Klicken Sie dazu mit der rechten Maustaste auf Ihre Projektmappe, und wählen Sie Add New Project (Neues Projekt hinzufügen) >aus. Wählen Sie in der Liste iOS-Tests >> Unified API > iOS Unit Tests Project aus (Sie können entweder C# oder F# auswählen).

Wählen Sie entweder C# oder F aus.#

Dadurch wird ein einfaches Projekt erstellt, dass ein grundlegendes Runnerprogramm enthält und das auf die neue Assembly „MonoTouch.NUnitLite“ verweist. Es wird folgendermaßen aussehen:

Das Projekt im Projektmappen-Explorer

Die Klasse AppDelegate.cs enthält den Test Runner und sieht folgendermaßen aus:

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

Hinweis

Der iOS-Projekttyp „Komponententest“ ist in Visual Studio 2019 oder in Visual Studio 2017 unter Windows nicht verfügbar.

Schreiben einiger Tests

Nun da die grundlegende Shell vorhanden ist, sollten Sie Ihre erste Reihe von Tests schreiben.

Tests werden geschrieben, indem Klassen erstellt werden, auf die das Attribut [TestFixture] angewendet wird. Sie sollten innerhalb jeder TestFixture-Klasse das Attribut [Test] für jede Methode anwenden, die den Test Runner aufrufen soll. Die tatsächlichen Prüfvorrichtungen können in jeder Datei in Ihrem Testprojekt vorhanden sein.

Klicken Sie für einen schnellen Start auf Hinzufügen/Neue Datei hinzufügen, und wählen Sie in der Xamarin.iOS-Gruppe UnitTests aus. Dadurch wird eine Skelettdatei hinzugefügt, die einen bestandenen, einen fehlgeschlagenen und einen ignorierten Test enthält. Dies sieht folgendermaßen aus:

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

Ausführen Ihrer Tests

Klicken Sie in Ihrer Projektmappe mit der rechten Maustaste auf das Projekt, um es auszuführen, und wählen Sie Debug Item (Element debuggen) oder Element ausführen aus.

Mit dem Test Runner können Sie sehen, welche Tests registriert sind, und Sie können einzeln auswählen, welche Tests ausgeführt werden können.

Die Liste der registrierten TestsEin einzelner Text

Die Ausführungsergebnisse

Sie können einzelne Prüfvorrichtungen ausführen, indem Sie sie aus den geschachtelten Ansichten auswählen, oder Sie können mit „Alles ausführen“ alle Ihre Tests ausführen. Wenn Sie den Standardtest ausführen, sollte dieser je einen Test enthalten, der je einen Test mit den Kriterien "bestanden", "fehlgeschlagen" und "ignoriert" enthalten soll. Die Berichte sehen folgendermaßen aus, und Sie können direkt einen Drilldown zu den fehlgeschlagenen Tests ausführen und mehr über den Fehler herausfinden:

Screenshot: Beispielbericht: Bildschirm Screenshot: Beispielbericht, Bildschirm Screenshot: Beispielbericht: Testbildschirm mit test status

Im Anwendungsausgabefenster in Ihrer IDE können Sie auch die aktuell ausgeführten Tests und deren gegenwärtigen Status sehen.

Schreiben neuer Tests

NUnitLite ist eine geänderte Version von NUnit mit dem Namen Touch.Unit-Projekt. Es ist ein einfaches Testframework für .NET, das auf den Ideen von NUnit basiert und einen Teil seiner Funktionen bietet. Es zeichnet sich durch minimalen Ressourcenverbrauch aus und kann so auch auf Plattformen mit eingeschränkten Ressourcen ausgeführt werden, die z.B. für die Entwicklung eingebetteter oder mobiler Lösungen verwendet werden. Die NUnitLite-API steht Ihnen in Xamarin.iOS zur Verfügung. Mit dem durch die Komponententestvorlage bereitgestellten grundlegenden Skelett, sind die Methoden Assert class Ihr Haupteinstiegspunkt.

Zusätzlich zu den Methoden der Assert-Klasse sind die Funktionen der Komponententests in die folgenden Namespaces aufgeteilt, die Teil von NUnitLite sind: