uwp
Тестирование модулей для UWP
Поиск…
Вступление
Я хотел бы показать вам, как создавать модульные тесты для универсального приложения Windows 10. Для тестирования приложений UWP мы будем использовать xUnit.net Framework, о которых вы можете прочитать больше из ссылки, представленной в разделе замечаний.
замечания
Вы можете узнать больше о xUnit Framewwork: https://xunit.github.io/docs/getting-started-uwp.html
Настроить тестовое приложение
После того, как ваше приложение UWP готово к тестированию, вы должны добавить тестовое приложение к своему решению. Чтобы сделать это «правильно», нажмите на решение и выберите «Unit Test App (Universal Windows)»:
Как только вы добавите его в решение, для его настройки требуется еще несколько шагов. Вам будет предложено выбрать целевую и минимальную версию платформы:
Выбрав их, откройте файл project.json и добавьте ниже зависимости:
"dependencies":
{
"Microsoft.NETCore.UniversalWindowsPlatform": "5.1.0",
"xunit.runner.visualstudio": "2.1.0",
"xunit": "2.1.0",
"xunit.runner.devices": "2.1.0"
}
Они используются для загрузки и добавления пакетов NuGet xUnit Framework для упрощения модульных тестов для приложения UWP.
Удалите ссылку под названием «MSTestFramework.Universal»:
Теперь откройте файл «UnitTest.cs». Измените это, чтобы выглядеть следующим образом:
using System;
using Xunit;
namespace UnitTestsForUwp
{
public class UnitTest1
{
[Fact]
public void TestMethod1()
{
Assert.Equal(4, 4);
}
[Theory]
[InlineData(6)]
public void TestMethod2(int value)
{
Assert.True(IsOdd(value));
}
bool IsOdd(int value)
{
return value % 2 == 1;
}
}
}
}
Хорошо остановиться здесь, чтобы немного поговорить о атрибутах xUnit:
а. Факт-тесты, которые всегда верны. Они проверяют инвариантные условия.
б. Теория - тесты, которые справедливы только для определенного набора данных.
Теперь мы хотели бы подготовить приложение для отображения информации об испытаниях, но не только - хорошо иметь один хороший способ начать тесты. Для этого нам нужно внести небольшие изменения в файл «UnitTestApp.xaml». Откройте его и замените весь код следующим:
<ui:RunnerApplication
x:Class="UnitTestsForUwp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:UnitTestsForUwp"
xmlns:ui = "using:Xunit.Runners.UI"
RequestedTheme="Light">
</ui:RunnerApplication>
Помните, что «local» должен иметь то же имя, что и ваше пространство имен.
Теперь откройте «UnitTestApp.xaml.cs» и замените код ниже:
sealed partial class App : RunnerApplication
{
protected override void OnInitializeRunner()
{
AddTestAssembly(GetType().GetTypeInfo().Assembly);
InitializeRunner();
}
partial void InitializeRunner();
}
Это оно! Теперь перестройте проект и запускайте тестовое приложение. Как вы можете видеть ниже, у вас есть доступ ко всем вашим тестам, вы можете запустить их и проверить результаты:
Подключить тестовое приложение с целевым кодом приложения
Когда тестовое приложение будет готово, вы можете подключить его к коду, для которого вы хотите написать модульные тесты.
Либо у вас есть код в PCL, либо в проекте приложения UWP (я предполагаю, что вы применили шаблон MVVM) просто добавьте ссылку на него в проекте Test Application:
Теперь у вас есть доступ ко всему вашему коду из тестового приложения. Создайте необходимые тесты. Просто используйте «Факты» или «Теории».
Выполнить некоторые функции
Как только у вас есть все готово для написания ваших тестов единиц, стоит упомянуть насмешку. Существует новая структура под названием «SimpleStubs», которая позволяет создавать макеты на основе интерфейсов.
Простой случай из документации GitHub:
//Sample interface:
public interface IPhoneBook
{
long GetContactPhoneNumber(string firstName, string lastName);
long MyNumber { get; set; }
event EventHandler<long> PhoneNumberChanged;
}
//Mocked interface:
var stub = new StubIPhoneBook().GetContactPhoneNumber((firstName, lastName) => 6041234567);
Подробнее об этом можно узнать здесь: https://github.com/Microsoft/SimpleStubs