Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
MSTest, Microsoft Testing Framework, — это платформа тестирования для приложений .NET. Он позволяет создавать и выполнять тесты, а также предоставлять наборы тестов с интеграцией с Visual Studio и Обозревателями тестов Visual Studio Code, интерфейсом командной строки .NET и многими конвейерами CI.
MSTest — это полностью поддерживаемая платформа с открытым исходным кодом и кроссплатформенная платформа тестирования, которая работает со всеми поддерживаемыми целевыми объектами .NET (платформа .NET Framework, .NET Core, .NET, .NET, UWP, WinUI и т. д.), размещенными на GitHub.
Параметры запуска
Файл runettings можно использовать для настройки запуска модульных тестов. Дополнительные сведения о параметрах запуска и конфигурациях, связанных с платформой, можно найти, ознакомившись с документацией по runsettings VSTest или документацией по runsettings MSTest.
Элемент MSTest
Следующие записи запуска позволяют настроить поведение MSTest.
| Настройка | По умолчанию. | Значения |
|---|---|---|
| AssemblyCleanupTimeout | 0 | Задайте таймаут, применяемый глобально к каждому экземпляру метода очистки сборки.
[Timeout] атрибут, заданный для метода очистки сборки, переопределяет общее время ожидания. |
| AssemblyInitializeTimeout | 0 | Укажите глобальную настройку времени ожидания, применяемую к каждому экземпляру метода инициализации сборки.
[Timeout] атрибут, указанный в методе инициализации сборки, переопределяет глобальное время ожидания. |
| AssemblyResolution | неверно | При поиске и выполнении модульных тестов можно указать пути к дополнительным сборкам. Например, эти пути можно использовать для сборок зависимостей, которые не находятся в том же каталоге, что и тестовая сборка. Чтобы указать путь, используйте элемент путь к каталогу. Пути могут содержать переменные среды.<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>Эта функция применяется только при использовании целевого объекта платформа .NET Framework. |
| CaptureTraceOutput | истинный | Записывайте текстовые сообщения, поступающие из API Console.Write*, Trace.Write* и Debug.Write*, которые будут связаны с текущим запущенным тестом. |
| ClassCleanupLifecycle | Конец занятия | Если вы хотите, чтобы очистка класса произошла в конце сборки, задайте для него значение EndOfAssembly. (Больше не поддерживается начиная с MSTest версии 4, так как EndOfClass — это поведение по умолчанию и единственное поведение ClassCleanup) |
| ClassCleanupTimeout | 0 | Укажите глобальный тайм-аут, применяемый к каждому вызову метода очистки класса.
[Timeout] атрибут, указанный в методе очистки класса, переопределяет глобальный тайм-аут. |
| ClassInitializeTimeout | 0 | Укажите глобальное время ожидания для применения к каждому экземпляру метода инициализации класса.
[Timeout] атрибут, указанный в методе инициализации класса, переопределяет глобальное время ожидания. |
| Рассматриватьфикстурыкакспециальныетесты | неверно | Чтобы отобразить AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup как отдельные записи в Visual Studio и Visual Studio Code в журнале Test Explorer и .trx, установите для этого значение true. |
| УдалитьДиректориюРазвертыванияПослеЗавершенияТестовогоЗапуска | истинный | Чтобы сохранить каталог развертывания после завершения тестового запуска, установите для этого параметра значение false. |
| DeploymentEnabled | истинный | Если задано значение false, элементы развертывания, указанные в методе тестирования, не копируются в каталог развертывания. |
| DeployTestSourceDependencies | истинный | Значение, указывающее, должны ли быть развернуты ссылки на источники тестов. |
| ВключитьМетодыТестированияБазовогоКлассаИзДругихСборок | истинный | Значение, указывающее, следует ли включить обнаружение методов тестирования из базовых классов в другой сборке, отличной от наследующего тестового класса. |
| ПринудительныйРежимНаследия | неверно | В более ранних версиях Visual Studio адаптер MSTest оптимизирован для ускорения и повышения масштабируемости. Некоторое поведение, в частности порядок, в котором выполняются тесты, может немного отличаться от поведения в предыдущих выпусках Visual Studio. Задайте значение true , чтобы использовать старый адаптер теста. Например, этот параметр можно использовать при наличии файла app.config, указанного для модульного теста. Рекомендуется рассмотреть возможность рефакторинга тестов для включения возможности использования более нового адаптера. |
| ОтобразитьНеопределенныеКакНеудачные | неверно | Если тест завершается с неопределенным состоянием, он сопоставляется с пропущенным состоянием в Обозревателе тестов. Если требуется, чтобы тесты с неопределенным результатом отображались как завершившиеся неудачно, установите для этого параметра значение true. |
| ОтметитьНеЗапускаемоеКакПровалившееся | истинный | Значение, показывающее, ассоциируется ли нерезультативный результат с неудачным тестом. |
| УпорядочитьТестыПоИмениВКлассе | неверно | Если вы хотите выполнить тесты по именам тестов как в обозревателях тестов, так и в командной строке, задайте для этого значения значение true. |
| Распараллелить | Используется для задания параметров параллелизации: Рабочие роли: количество потоков или рабочих ролей, используемых для параллелизации, которое по умолчанию является числом процессоров на текущем компьютере. ОБЛАСТЬ: область параллелизации. Его можно задать в MethodLevel. По умолчанию это ClassLevel. <Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize> |
|
| ФайлНастроек | Здесь можно задать файл параметров тестирования для использования с адаптером MSTest. Также можно указать файл настроек теста из меню параметров. Если задано это значение, необходимо также задать для параметра ForcedlegacyMode значение true. <ForcedLegacyMode>true</ForcedLegacyMode> |
|
| TestCleanupTimeout | 0 | Задайте глобально время ожидания, применяемое к каждому экземпляру метода очистки теста.
[Timeout] атрибут, указанный для метода очистки теста, переопределяет глобальное время ожидания. |
| TestInitializeTimeout | 0 | Укажите глобально время ожидания для применения к каждому экземпляру метода инициализации теста.
[Timeout] атрибут, указанный в методе инициализации теста, переопределяет глобальный таймаут. |
| TestTimeout | 0 | Возвращает указанное время ожидания тестового случая глобального уровня. |
| ОбработкаПредупрежденийОчисткиКлассаИСборкиКакОшибок | неверно | Чтобы рассматривать недочеты при очистке класса как ошибки, установите для этого параметра значение true. |
| Обрабатывать предупреждения обнаружения как ошибки (TreatDiscoveryWarningsAsErrors) | неверно | Чтобы сообщить о предупреждениях об обнаружении тестов как об ошибках, задайте для этого значение true. |
TestRunParameter - элемент
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
</TestRunParameters>
Параметры тестового запуска предоставляют способ определения переменных и значений, доступных для тестов во время выполнения. Доступ к параметрам с помощью свойства MSTest TestContext.Properties :
private string _appUrl;
public TestContext TestContext { get; set; }
[TestMethod]
public void HomePageTest()
{
string _appUrl = TestContext.Properties["webAppUrl"];
}
Чтобы использовать параметры тестового запуска, добавьте в тестовый класс общедоступное свойство TestContext.
Пример файла .runsettings
Следующий XML-код представляет содержимое обычного файла .runsettings. Скопируйте этот код и измените его в соответствии с требованиями.
Каждый элемент этого файла необязателен, так как все они имеют значения по умолчанию.
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at runtime -->
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
<Parameter name="webAppUserName" value="Admin" />
<Parameter name="webAppPassword" value="Password" />
</TestRunParameters>
<!-- MSTest -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>False</DeploymentEnabled>
<ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
<AssemblyResolution>
<Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
</AssemblyResolution>
</MSTest>
</RunSettings>
testconfig.json
При выполнении тестов с помощью MSTest можно использовать файл testconfig.json для настройки поведения средства запуска тестов. Файл testconfig.json — это JSON-файл, содержащий настройки конфигурации для средства выполнения тестов. Файл используется для настройки тестового запуска и среды выполнения. Для получения дополнительной информации см. документацию по Microsoft.Testing.Platform testconfig.json.
Начиная с MSTest 3.7, можно также настроить запуск MSTest в том же файле конфигурации. В следующих разделах описаны параметры, которые можно использовать в файле testconfig.json.
Элемент MSTest
Параметры MSTest группируются по функциям, описанным в следующих разделах.
| Вход | По умолчанию. | Описание |
|---|---|---|
| Упорядочить тесты по имени в классе | неверно | Если вы хотите выполнить тесты по именам тестов как в обозревателях тестов, так и в командной строке, задайте для этого значения значение true. |
| включитьМетодыТестированияБазовогоКлассаИзДругихСборок | истинный | Значение, указывающее, следует ли включить обнаружение методов тестирования из базовых классов в другой сборке, отличной от наследующего тестового класса. |
| classCleanupLifecycle | Конец сборки | Если вы хотите, чтобы очистка класса произошла в конце класса, задайте для него значение EndOfClass. |
ПараметрыassemblyResolution
Все параметры в этом разделе относятся к элементу assemblyResolution.
| Вход | По умолчанию. | Описание |
|---|---|---|
| Пути | Нет | При поиске и выполнении модульных тестов можно указать пути к дополнительным сборкам. Например, эти пути можно использовать для сборок зависимостей, которые не находятся в том же каталоге, что и тестовая сборка. Можно указать путь в фигуре { "path": "...", "includeSubDirectories": "true/false" }. |
Пример:
{
"mstest": {
"assemblyResolution": {
{ "path": "...", "includeSubDirectories": "true/false" }
}
}
}
Параметрыdeployment
Все параметры в этом разделе относятся к элементу deployment.
| Вход | По умолчанию. | Описание |
|---|---|---|
| удалитьДиректориюРазвертыванияПослеЗавершенияТестовогоЗапуска | истинный | Чтобы сохранить каталог развертывания после завершения тестового запуска, установите для этого параметра значение false. |
| deployTestSourceDependencies | истинный | Указывает, следует ли развертывать ссылки на тестовые исходники. |
| Включен | истинный | Если задано значение false, элементы развертывания, указанные в методе тестирования, не копируются в каталог развертывания. |
Пример:
{
"mstest": {
"deployment": {
"deleteDeploymentDirectoryAfterTestRunIsComplete": true,
"deployTestSourceDependencies": true,
"enabled": true
}
}
}
Параметрыoutput
Все параметры в этом разделе относятся к элементу output.
| Вход | По умолчанию. | Описание |
|---|---|---|
| captureTrace | истинный | Записывайте текстовые сообщения, поступающие из API Console.Write*, Trace.Write* и Debug.Write*, которые будут связаны с текущим запущенным тестом. |
Пример:
{
"mstest": {
"output": {
"captureTrace": false
}
}
}
Параметрыparallelism
Все параметры в этом разделе относятся к элементу parallelism.
| Вход | По умолчанию. | Описание |
|---|---|---|
| Включен | неверно | Включите параллелизацию тестов. |
| размах | класс | Область параллелизации. Можно установить на method. Значение по умолчанию classсоответствует выполнению всех тестов заданного класса последовательно, но нескольких классов параллельно. |
| Работники | 0 | Количество потоков и работников, используемых для параллелизации. Значение по умолчанию сопоставляется с количеством процессоров на текущем компьютере. |
Пример:
{
"mstest": {
"parallelism": {
"enabled": true,
"scope": "method",
"workers": 32
}
}
}
Параметрыexecution
Все параметры в этом разделе относятся к элементу execution.
| Вход | По умолчанию. | Описание |
|---|---|---|
| считатьДанныеИзПустогоИсточникаНеопределёнными | неверно | Если задано значение true, пустой источник данных считается неуклюзивным. |
| рассматриватьФикстурыКакОсобыеТесты | неверно | Чтобы отобразить AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup как отдельные записи в Visual Studio и Visual Studio Code, а также в журнале файлов Test Explorer и .trx, установите для этого параметра значение true. |
| сопоставитьНеопределенныеСоНеобходимыми | неверно | Если тест завершается с неопределенным состоянием, он сопоставляется с пропущенным состоянием в Обозревателе тестов. Если требуется, чтобы тесты с неопределенным результатом отображались как завершившиеся неудачно, установите для этого параметра значение true. |
| ОтобразитьНеИсполняемоеНаНеудавшееся | истинный | Значение, показывающее, ассоциируется ли нерезультативный результат с неудачным тестом. |
| обрабатыватьПредупрежденияОчисткиКлассаИСборкиКакОшибки | неверно | Чтобы рассматривать недочеты при очистке класса как ошибки, установите для этого параметра значение true. |
| рассматриватьПредупрежденияОбнаруженияКакОшибки | неверно | Чтобы сообщить о предупреждениях об обнаружении тестов как об ошибках, задайте для этого значение true. |
Пример:
{
"mstest": {
"execution": {
"considerEmptyDataSourceAsInconclusive": false,
"considerFixturesAsSpecialTests": false,
"mapInconclusiveToFailed": true,
"mapNotRunnableToFailed": true,
"treatClassAndAssemblyCleanupWarningsAsErrors": false,
"treatDiscoveryWarningsAsErrors": false
}
}
}
Параметрыtimeout
Все параметры в этом разделе относятся к элементу timeout.
| Вход | По умолчанию. | Описание |
|---|---|---|
| Очистка сборки | 0 | Задайте таймаут, применяемый глобально к каждому экземпляру метода очистки сборки. |
| инициализация сборки | 0 | Укажите глобальную настройку времени ожидания, применяемую к каждому экземпляру метода инициализации сборки. |
| classCleanup | 0 | Укажите глобальный тайм-аут, применяемый к каждому вызову метода очистки класса. |
| classInitialize | 0 | Укажите глобальное время ожидания для применения к каждому экземпляру метода инициализации класса. |
| тест | 0 | Укажите на глобальном уровне время ожидания теста. |
| testCleanup | 0 | Задайте глобально время ожидания, применяемое к каждому экземпляру метода очистки теста. |
| инициализация теста | 0 | Укажите глобально время ожидания для применения к каждому экземпляру метода инициализации теста. |
| использоватьСогласованноеОтмена | неверно | Если установлено значение true, и произойдет тайм-аут, MSTest инициирует отмену CancellationToken, но не прекратит наблюдение за методом. Это поведение более эффективно, но зависит от пользователя, который должен корректно проводить токен по всем маршрутам. |
Заметка
Атрибут [Timeout], указанный в методе, переопределяет глобальное время ожидания. Например, значение [Timeout(1000)] для метода, помеченного [AssemblyCleanup], переопределит глобальный тайм-аут assemblyCleanup.
Пример:
{
"mstest": {
"timeout": {
"assemblyCleanup": 0,
"assemblyInitialize": 0,
"classCleanup": 0,
"classInitialize": 0,
"test": 0,
"testCleanup": 0,
"testInitialize": 0,
"useCooperativeCancellation": false
}
}
}
Пример файла testconfig.json
В следующем формате JSON показано содержимое типичного файла .testconfig.json. Скопируйте этот код и измените его в соответствии с требованиями.
Каждый элемент этого файла необязателен, так как все они имеют значения по умолчанию.
{
"platformOptions": {
},
"mstest": {
"execution": {
"mapInconclusiveToFailed" : true,
"disableAppDomain": true,
"considerFixturesAsSpecialTests" : false,
},
"parallelism" : {
"enabled": true,
"scope": "method",
},
"output": {
"captureTrace": false
}
}
}