Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В приведенном ниже примере показан файл .cs C# с простым классом тестирования, демонстрирующим разметку тестов C#. (Обратите внимание, что этот пример предназначен только для демонстрационных целей, поэтому он не будет компилировать или запускаться.)
1 using Microsoft.VisualStudio.TestTools.UnitTesting;
2 using System;
3 using System.Collections;
4 using WEX.Logging.Interop;
5 using WEX.TestExecution;
6
7 [TestClass]
8 public class ManagedStartMenuTests
9 {
10 [AssemblyInitialize]
11 [TestProperty("Component", "Navigation")]
12 [TestProperty("SubComponent", "StartMenu")]
13 public static void RunModuleSetup(Object context)
14 {
15 defaultPolicy = SetObjectFactoryPolicy(PolicyClassic);
16 }
17
18 [AssemblyCleanup]
19 public static void RunModuleCleanup()
20 {
21 SetObjectFactoryPolicy(defaultPolicy);
22 }
23
24 [ClassInitialize]
25 [TestProperty("TeamOwner", "WEX")]
26 [TestProperty("GroupOwner", "MediaPlayerTest")]
27 public static void TestClassSetup(Object testContext)
28 {
29 objectFactory = new ObjectFactory();
30 }
31
32 [ClassCleanup]
33 public static void TestClassCleanup()
34 {
35 objectFactory.Dispose();
36 }
37
38 [TestInitialize]
39 public void TestMethodSetup()
40 {
41 startMenuObject = objectFactory.CreateObject();
42 }
43
44 [TestCleanup]
45 public void TestMethodCleanup()
46 {
47 startMenuObject.Dispose();
48 }
49
50
51 [TestMethod]
52 [Owner("Someone")]
53 [Priority(0)]
54 public void TestMethod1()
55 {
56 Verify.AreEqual(startMenuObject.size, expectedObjectSize);
57 }
58 }
Для объявления тестов c# TAEF использует разметку теста VSTS.
Чтобы объявить тестовый класс в C#, используйте атрибут [TestClass] в обычном классе C# (Line 7) и для объявления метода теста используйте атрибут [TestMethod] в обычном методе класса (Line 51).
Разметка тестов C# также поддерживает полный спектр методов установки и очистки.
Статический метод с набором атрибутов AssemblyInitialize выполняется перед любыми другими методами класса и выполняет инициализацию уровня сборки (Строка 10). Следовательно, существует метод очистки сборки, статический метод с набором атрибутов [AssemblyCleanup], который выполняется после завершения всех других методов (Строка 18).
Аналогичным образом существуют методы установки классов и тестов и очистки. (см. строки 24, 32, 38, 44) В отличие от C++, методы установки и очистки классов в управляемом коде должны быть статическими.
Разметка теста TAEF C# поддерживает свойства тестов, классов и модулей.
Чтобы задать свойства модуля, задайте атрибуты в инициализаторе сборок (см. строки 11 и 12). Аналогичным образом, чтобы задать свойства уровня класса, задайте свойства для инициализатора класса (см. строки 25 и 26). Для свойства уровня метода теста просто примените свойство к конкретному методу теста. (см. строки 52 и 53)
Выполнение в VSTS
Примечание. Чтобы уменьшить зависимость от двоичных файлов VSTS, методы установки класса и сборки в настоящее время принимают Объект в качестве первого параметра.
Если вы хотите выполнить тесты из VSTS, измените этот тип объекта на тип TestContext . Помните, что это добавит зависимость от microsoft.visualstudio.qualitytools.unittestframework.dll и microsoft.visualstudio.qualitytools.resource.dll.
Действия немного отличаются при выполнении в VSTS. Необходимо настроить параметры локального тестового запуска, чтобы скопировать неуправляемые зависимости. Для этого перейдите к следующему разделу:
- Тестовое> изменение конфигураций тестового> запуска локальных тестов
- Щелкните по разделу Deployment. Введите библиотеки DLL, которые необходимо скопировать для каждого теста:
- Wex.Logger.dll
- Wex.Common.dll
- Wex.Common.Managed.dll
- Wex.Communication.dll
- Wex.Logger.Interop.dll
Это необходимо из-за того, что VSTS создает новый каталог и копирует файлы при каждом запуске тестовых случаев. Эти каталоги можно просмотреть на компьютере как папку с братом в папку проекта.
Выполнение управляемых тестов в домене приложения по умолчанию
По умолчанию для изоляции кода тестирования TAEF выполняет управляемые тесты в специальном домене тестового приложения. Однако при использовании доменов приложений, отличных от по умолчанию, сценарии, в которых машинный код вызывает управляемый код (например, собственные функции обратного вызова, потребляемые управляемым кодом), могут вызывать ошибки с сообщением: "Не удается передать GCHandle через AppDomains". Для этих сценариев используйте переключатель /defaultAppDomain, чтобы запустить управляемые тесты в домене приложения по умолчанию.
Обратите внимание, что выполнение управляемых тестов в домене приложения по умолчанию несовместимо с файлами конфигурации сборки.
Поддержка асинхронных методов тестирования
Двоичные файлы NETFX 4.5 TAEF поддерживают выполнение асинхронных методов тестирования TAEF. Это означает, что тесты TAEF, помеченные асинхронным ключевым словом, могут ожидать асинхронных операций.
Заметка Не пытайтесь использовать эту функцию с двоичными файлами NetFX 2.0/3.5 в TAEF; Эта функция поддерживается только двоичными файлами NetFX 4.5.
TAEF поддерживает как асинхронные методы тестирования void , так и асинхронные тесты задач (оба приводят к одинаковым функциям):
[TestMethod]
public async Task MyAsyncTest()
{
await AsyncAPICall1();
var result = await AsyncAPICall2();
Verify.IsTrue(result);
}
Еще один вариант:
[TestMethod]
public async void MyAsyncTest2()
{
await AsyncAPICall1();
var result = await AsyncAPICall2();
Verify.IsTrue(result);
}