Модульное тестирование приложений Xamarin.iOS

В этом документе описывается создание модульных тестов для проектов Xamarin.iOS. Модульное тестирование с помощью Xamarin.iOS осуществляется с помощью платформы Touch.Unit, в состав которой входит средство запуска тестов iOS и измененная версия платформы NUnit, которая называется Touch.Unit и предоставляет знакомый набор API-интерфейсов для написания модульных тестов.

Настройка тестового проекта в Visual Studio для Mac

Чтобы настроить платформу модульного тестирования для проекта, необходимо лишь добавить в решение проект типа Проект модульных тестов iOS. Для этого щелкните решение правой кнопкой мыши и выберите "Добавить > новый проект". В списке выберите проект модульных тестов API iOS для iOS > (>> можно выбрать C# или F#).

Choose either C# or F#

После этого будет создан базовый проект, содержащий основное средство выполнения тестов и ссылающийся на новую сборку MonoTouch.NUnitLite. Проект будет выглядеть следующим образом:

The project in the Solution Explorer

Класс AppDelegate.cs содержит средство выполнения тестов и выглядит следующим образом:

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

Примечание.

Тип проекта модульного теста iOS не доступен в Visual Studio 2019 или Visual Studio 2017 в Windows.

Написание некоторых тестов

Теперь, когда имеется базовая оболочка, следует написать первый набор тестов.

Тесты написаны путем создания классов с примененным к ним атрибутом [TestFixture]. В каждом классе TestFixture атрибут [Test] следует применить к каждому методу, который должен вызывать средство выполнения тестов. Фактические средства тестирования могут существовать в любом файле в проекте тестирования.

Чтобы быстро приступить к работе, выберите Добавить/Добавить новый файл и выберите UnitTests в группе Xamarin.iOS. После этого будет добавлен структурный файл, содержащий один пройденный тест, один непройденный тест и один пропущенный тест. Файл выглядит следующим образом:

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

Выполнение тестов

Для запуска проекта в решении щелкните его правой кнопкой мыши и выберите пункт Отладка элемента или Запустить элемент.

Средство выполнения тестов позволяет просмотреть, какие тесты регистрируются, и по отдельности выбрать, какие тесты могут выполняться.

The list of registered testsAn individual text

The run results

Можно выполнить отдельное средство тестирования, выбрав его из вложенных представлений, или выполнить все тесты, выбрав "Выполнить все". При выполнении теста по умолчанию он должен содержать один пройденный тест, один непройденный тест и один пропущенный тест. Отчет будет выглядеть следующим образом. Можно перейти непосредственно к непройденному тесту и изучить дополнительные сведения о сбое:

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.

Можно также обратиться к окну выходных данных приложения в интегрированной среде разработки, чтобы увидеть, какие тесты выполняются, и их текущее состояние.

Написание новых тестов

NUnitLite является модификацией NUnit, которая называется проектом Touch.Unit. Это облегченная платформа тестирования для .NET, созданная на базе NUnit и содержащая поднабор ее компонентов. Она использует минимальный объем ресурсов и подходит для платформ с ограниченными ресурсами, таким, как те, которые используются при разработке внедряемых решений и решений для мобильных устройств. API-интерфейс NUnitLite доступен в Xamarin.iOS. С помощью базовой структуры, которая содержится в шаблоне модульного теста, вы получаете методы класса Assert, которые являются основной точкой входа.

Помимо методов класса assert, функциональные возможности модульного тестирования разбиты на следующие пространства имен, которые являются частью NUnitLite: