Testowanie jednostkowe aplikacji platformy Xamarin.iOS

W tym dokumencie opisano sposób tworzenia testów jednostkowych dla projektów platformy Xamarin.iOS. Testowanie jednostkowe za pomocą platformy Xamarin.iOS odbywa się przy użyciu struktury Touch.Unit, która zawiera zarówno moduł uruchamiający testy systemu iOS, jak i zmodyfikowaną wersję narzędzia NUnit o nazwie Touch.Unit , która udostępnia znany zestaw interfejsów API do pisania testów jednostkowych.

Konfigurowanie projektu testowego w Visual Studio dla komputerów Mac

Aby skonfigurować strukturę testowania jednostkowego dla projektu, wystarczy dodać do rozwiązania projekt typu iOS Unit Tests Project. W tym celu kliknij prawym przyciskiem myszy rozwiązanie i wybierz polecenie Dodaj > nowy projekt. Z listy wybierz pozycję Testy ujednoliconego interfejsu API ujednoliconego projektu testów > jednostkowych systemu > iOS > (możesz wybrać język C# lub F#).

Choose either C# or F#

Powyższe spowoduje utworzenie podstawowego projektu, który zawiera podstawowy program modułu uruchamiającego i który odwołuje się do nowego zestawu MonoTouch.NUnitLite, projekt będzie wyglądać następująco:

The project in the Solution Explorer

Klasa AppDelegate.cs zawiera moduł uruchamiający testy i wygląda następująco:

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

Uwaga

Typ projektu testów jednostkowych systemu iOS nie jest dostępny w programie Visual Studio 2019 lub Visual Studio 2017 w systemie Windows.

Pisanie niektórych testów

Teraz, gdy masz podstawową powłokę, należy napisać pierwszy zestaw testów.

Testy są zapisywane przez tworzenie klas, które mają [TestFixture] zastosowany atrybut. Wewnątrz każdej klasy TestFixture należy zastosować [Test] atrybut do każdej metody, którą ma wywołać moduł uruchamiający testy. Rzeczywiste urządzenia testowe mogą znajdować się w dowolnym pliku w projekcie Testy.

Aby szybko rozpocząć, wybierz pozycję Dodaj/Dodaj nowy plik i wybierz pozycję w grupie UnitTests platformy Xamarin.iOS. Spowoduje to dodanie pliku szkieletowego zawierającego jeden test zakończony niepowodzeniem, jeden test zakończony niepowodzeniem i jeden zignorowany test. Wygląda to następująco:

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

Uruchamianie testów

Aby uruchomić ten projekt wewnątrz rozwiązania, kliknij go prawym przyciskiem myszy i wybierz polecenie Debuguj element lub Uruchom element.

Moduł uruchamiający testy umożliwia sprawdzenie, które testy są zarejestrowane, i wybrać indywidualnie, które testy można wykonać.

The list of registered testsAn individual text

The run results

Poszczególne urządzenia testowe można uruchamiać, wybierając oprawę tekstową z zagnieżdżonych widoków lub uruchamiając wszystkie testy za pomocą polecenia "Uruchom wszystko". Jeśli uruchomisz test domyślny, który ma zawierać jeden test z przekazywaniem, jeden błąd i jeden zignorowany test. Ten raport wygląda następująco: możesz przejść bezpośrednio do szczegółów testów zakończonych niepowodzeniem i dowiedzieć się więcej o niepowodzeniu:

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.

Możesz również zapoznać się z oknem Dane wyjściowe aplikacji w środowisku IDE, aby zobaczyć, które testy są wykonywane i ich bieżący stan.

Pisanie nowych testów

NUnitLite to zmodyfikowana wersja projektu NUnit o nazwie Touch.Unit . Jest to uproszczona struktura testowania dla platformy .NET oparta na pomysłach w narzędziu NUnit i udostępnia podzestaw jej funkcji. Korzysta z minimalnych zasobów i będzie działać na platformach z ograniczeniami zasobów, takich jak te używane w osadzonej i mobilnej programowania. Interfejs API NUnitLite jest dostępny dla Ciebie w środowisku Xamarin.iOS. W przypadku podstawowego szkieletu dostarczonego przez szablon testu jednostkowego główny punkt wejścia to metody klasy Assert.

Oprócz metod asercji, funkcja testowania jednostkowego jest podzielona na następujące przestrzenie nazw, które są częścią NUnitLite: