Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе мы даем рекомендации по тестированию и проверке функциональности в приложениях, созданных с использованием интерфейсных возможностей Windows App SDK и WinUI 3. Тестирование является важной частью процесса разработки приложений— это помогает перехватывать ошибки раньше, поддерживать качество кода и обеспечить надежный пользовательский интерфейс по мере развития приложения. Включив модульные тесты в рабочий процесс, вы можете уверенно рефакторингировать код, добавить новые функции и отправить обновления, зная, что существующие функциональные возможности продолжают работать должным образом.
Руководство. Создание проекта модульного теста WinUI 3.
Большинство типов объектов в пространствах имен Microsoft.UI.Xaml должны использоваться из потока пользовательского интерфейса в процессе приложения XAML. (Дополнительные сведения о тестировании приложений, созданных с Windows App SDK, которые не используют WinUI 3, см. в следующем разделе: Тестирование функциональности, не связанной с WinUI.)
Замечание
Рекомендуется рефакторинг любого кода для тестирования, извлекая его из основного проекта приложения и помещая его в проект библиотеки. Затем проект приложения и проект модульного теста могут ссылаться на этот проект библиотеки. В этом разделе описывается создание модульных тестов для приложений WinUI 3 в Visual Studio с помощью встроенных шаблонов проектов модульного теста.
Замечание
Приложение модульного теста, описанное здесь, написано в контексте приложения WinUI 3. Это необходимо для всех тестов, которые выполняют код, требующий среды выполнения XAML. Этот проект создаст поток пользовательского интерфейса XAML и выполнит тесты.
В этом руководстве вы узнаете, как:
- Создайте проект модульного теста WinUI в Visual Studio.
- Используйте Visual Studio Инспектор тестирования.
- Добавьте проект библиотеки классов WinUI для тестирования.
- Запустите тесты с помощью обозревателя тестов Visual Studio.
Необходимые условия
Необходимо установить и настроить Visual Studio для разработки WinUI. См. "Краткое руководство: настройка среды и создание проекта WinUI 3".
Создание проекта приложения модульного теста WinUI
Чтобы начать, создайте проект модульного теста. Для этого типа проекта уже имеются все нужные файлы шаблонов.
Откройте Visual Studio и выберите Create новый проект в окне "Пуск".
В окне Create новый проект отфильтруйте проекты по C#, Windows и WinUI выберите шаблон WinUI Unit Test App и выберите Next
[Необязательно] В окне "Настройка нового проекта" измените имя проекта, имя решения (снимите флажок "Разместить решение" и "Проект" в том же каталоге) и расположение проекта.
Нажмите кнопку "Создать".
Выполнение тестов с помощью обозревателя тестов
При создании тестового проекта тесты отображаются в обозревателе тестов, который используется для выполнения модульных тестов. Вы также можете группировать тесты в категории, фильтровать список тестов, создавать, сохранять и запускать списки воспроизведения тестов, отладочные модульные тесты и (в Visual Studio Enterprise) анализировать покрытие кода.
Файл UnitTests.cs содержит исходный код для модульных тестов, используемых Test Explorer. По умолчанию базовые примеры тестов, показанные здесь, создаются автоматически:
namespace WinUITest1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
Assert.AreEqual(0, 0);
}
// Use the UITestMethod attribute for tests that need to run on the UI thread.
[UITestMethod]
public void TestMethod2()
{
var grid = new Grid();
Assert.AreEqual(0, grid.MinWidth);
}
}
}
Если вы этого еще не сделали, создайте решение. Это позволит Visual Studio "обнаружить" все доступные тесты.
Откройте обозреватель тестов. Если он не отображается, откройте меню "Тест " и выберите обозреватель тестов (или нажмите клавиши CTRL+ E, T).
Просмотр тестов. В окне обозревателя тестов разверните все узлы (на этом этапе будут присутствовать только примеры тестов).
Выполните тесты.
- Щелкните правой кнопкой мыши отдельные тестовые узлы и выберите "Выполнить".
- Выберите тест и нажмите кнопку воспроизведения или нажмите клавиши CTRL+R, T.
- Нажмите кнопку "Выполнить все тесты в представлении" или нажмите клавиши CTRL+R, V.
Просмотр результатов. После завершения тестов результаты отображаются в окне обозревателя тестов.
Добавление проекта библиотеки классов для тестирования
Добавьте новый проект в решение модульного теста. В Solution Explorer щелкните решение правой кнопкой мыши и выберите Add -> Новый проект... .
Скриншот контекстного меню решения с выделенным вариантом "Добавить/Новый проект" в Visual Studio. В этом примере добавьте проект библиотеки классов WinUI 3. В окне "Новый проект" отфильтруйте библиотеку классов C#/Windows/WinUI и выберите библиотеку классов WinUI.
Нажмите кнопку "Далее " и введите имя проекта (в этом примере мы используем
WinUIClassLibrary1) и нажмите клавишу CREATE.Снимок экрана нового проекта «Библиотека классов WinUI», выделенного в Solution Explorer, а файл Class1.cs открыт в редакторе кода.
Добавьте новое
UserControlв проект. В Solution Explorer щелкните правой кнопкой мыши проект библиотеки классов WinUI 3, который вы только что добавили и выберите Add -> New Item в контекстном меню.
В окне "Добавить новый элемент" выберите узел WinUI в списке установленных элементов и выберите элемент управления пользователем из результатов. Присвойте элементу управления
UserControl1имя.
Откройте файл связанного кода UserControl1.xaml.cs. В этом примере мы добавим новый публичный метод
GetSeven, который просто возвращает целое число.namespace WinUICLassLibrary1 { public sealed partial class UserControll : UserControl { public UserControl1() { this.InitializeComponent(); } public int GetSeven() { return 7; } } }Задайте проект библиотеки классов WinUI 3 в качестве зависимости от проекта модульного теста, чтобы включить использование типов из проекта библиотеки классов WinUI 3. В Solution Explorer в проекте библиотеки классов щелкните правой кнопкой мыши Dependencies и выберите Add Project Reference>.
WinUIClassLibrary1Выберите элемент из списка "Проекты".
Создайте новый метод тестирования в UnitTests.cs. Так как этот тестовый случай требует запуска потока пользовательского интерфейса XAML, помечайте его атрибутом
[UITestMethod]вместо стандартного[TestMethod]атрибута.[UITestMethod] public void TestUserControl1() { WinUIClassLibrary1.UserControl1 userControl1 = new WinUIClassLibrary1.UserControl1(); Assert.AreEqual(7, userControl1.GetSeven()); }Этот новый метод тестирования теперь отображается в обозревателе тестов в качестве одного из модульных тестов.
Выполните тесты.
- Щелкните правой кнопкой мыши новый тестовый узел и выберите "Выполнить".
- Выберите новый тест и нажмите кнопку воспроизведения или нажмите клавиши CTRL+ R, T.
- Нажмите кнопку "Выполнить все тесты в представлении" или нажмите клавиши CTRL+R, V.
Тестирование функциональных возможностей, отличных от WinUI
Во многих случаях приложение включает функции, которые не зависят от типов Microsoft.UI.Xaml, но по-прежнему требуют тестирования. Различные средства доступны для тестирования кода .NET, включая MSTest, NUnit и xUnit>. Дополнительные сведения о тестировании приложений .NET см. в разделе Testing в .NET.
В Visual Studio вы можете создать проект для любого из этих средств тестирования, щелкнув правой кнопкой мыши по вашему решению в Solution Explorer, выбрав Add -> New Project в контекстном меню, затем отметив C# в селекторе все языки/Windows в селекторе все языки/Test в селекторе все типы проектов, и затем выбрав соответствующее средство тестирования из списка (MSTest Test Project, NUnit Test Project или xUnit Test Project).
При создании нового проекта MSTest, NUnit или xUnit, ссылающегося на проект WinUI 3, необходимо:
Обновите элемент
TargetFrameworkв файле .csproj вашего тестового проекта. Это значение должно соответствоватьTargetFrameworkв проекте WinUI 3. По умолчанию проекты MSTest, NUnit и xUnit нацелены на полный спектр платформ, поддерживаемых .NET, но проект WinUI 3 поддерживает только Windows и имеет более конкретный TargetFramework.Например, если целевой объект .NET 8, обновите TargetFramework проекта модульного теста с
<TargetFramework>net8.0</TargetFramework>до<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>.Обновите RuntimeIdentifiers в тестовом проекте.
<RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) >= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers><RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) < 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>Добавьте следующее свойство в файл
PropertyGroupв CSPROJ-файле тестового проекта, чтобы убедиться, что тест загружает среду выполнения Windows App SDK:<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>Убедитесь, что среда выполнения Windows App SDK установлена на компьютере, на котором выполняется тест. Для получения дополнительных сведений о развертывании Windows App SDK см. руководство по развертыванию Windows App SDK для приложений, зависящих от платформы, которые упакованы с использованием внешнего расположения (или неупакованы).
Дополнительные ресурсы
Windows developer