Модульное тестирование Xamarin
В этом документе описывается создание модульных тестов для проектов Xamarin.iOS. Модульное тестирование с помощью Xamarin.iOS осуществляется с помощью платформы Touch.Unit, в состав которой входит средство запуска тестов iOS и измененная версия платформы NUnit, которая называется Touch.Unit и предоставляет знакомый набор API-интерфейсов для написания модульных тестов.
Настройка тестового проекта в Visual Studio для Mac
Чтобы настроить платформу модульного тестирования для проекта, необходимо лишь добавить в решение проект типа Проект модульных тестов iOS. Для этого щелкните решение правой кнопкой мыши и выберите "Добавить > новую Project". В списке выберите Project модульных тестов единого API > для iOS >> (можно выбрать C# или F#).
После этого будет создан базовый проект, содержащий основное средство выполнения тестов и ссылающийся на новую сборку MonoTouch.NUnitLite. Проект будет выглядеть следующим образом:
Класс 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); } } }
Выполнение тестов
Для запуска проекта в решении щелкните его правой кнопкой мыши и выберите пункт Отладка элемента или Запустить элемент.
Средство выполнения тестов позволяет просмотреть, какие тесты регистрируются, и по отдельности выбрать, какие тесты могут выполняться.
Можно выполнить отдельное средство тестирования, выбрав его из вложенных представлений, или выполнить все тесты, выбрав "Выполнить все". При выполнении теста по умолчанию он должен содержать один пройденный тест, один непройденный тест и один пропущенный тест. Отчет будет выглядеть следующим образом. Можно перейти непосредственно к непройденному тесту и изучить дополнительные сведения о сбое:
Написание новых тестов
NUnitLite является модификацией NUnit, которая называется проектом Touch.Unit. Это облегченная платформа тестирования для .NET, созданная на базе NUnit и содержащая поднабор ее компонентов. Она использует минимальный объем ресурсов и подходит для платформ с ограниченными ресурсами, таким, как те, которые используются при разработке внедряемых решений и решений для мобильных устройств. API-интерфейс NUnitLite доступен в Xamarin.iOS. С помощью базовой структуры, которая содержится в шаблоне модульного теста, вы получаете методы класса Assert, которые являются основной точкой входа.
Помимо методов класса assert, функциональные возможности модульного тестирования разбиты на следующие пространства имен, которые являются частью NUnitLite: