Подтвердить что ты не робот

Подстановочные тестовые контейнеры для mestest. Exe

Можно ли передать значения контрольных контейнеров подстановки в командной строке mstest.exe, а не вручную жестко кодировать несколько значений testcontainer? Например,

Mstest.exe/testcontainer:tests.dll

Я хочу вручную вызвать mstest в нашем tfs 2012 upgrade template.xaml build processso tth, что он ведет себя как способ автообнаружения, аналогичный запуску тестов по умолчанию template.xaml

Если бы это не было записано в bat script для прокрутки папок из заданной начальной папки?

4b9b3361

Ответ 1

MSTest не принимает параметр подстановки для тестового контейнера (смотрите здесь ссылку на параметры командной строки). Однако он может принимать несколько аргументов /testcontainer следующим образом:

mstest.exe /testcontainer:a.test.dll /testcontainer:b.tests.dll

Вам придется указать этот параметр другим способом. Это можно сделать с помощью командного файла, но MSBuild может быть лучшим выбором для этого:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="RunMSTest">

<ItemGroup>
    <TestAssemblies Include="**\*Tests.dll"/>
</ItemGroup>

<Target Name="RunMSTest">
    <Exec Condition=" '@(TestAssemblies)' != ''"
          Command="Mstest.exe @(TestAssemblies ->'/testcontainer:&quot;%(RecursiveDir)%(Filename)%(Extension)&quot;', ' ')"
          />
</Target>

</Project>

(благодаря fooobar.com/questions/441777/... для преобразования)

Сохраните я в файл (testall.proj) и запустите его с помощью MSBuild testall.proj или создайте пакетный файл, чтобы запустить его для вас.

Также обратите внимание, что mstest загружает все поставляемые тестовые контейнеры в один домен приложения, поэтому им нужно будет поддерживать одну и ту же целевую платформу (любой процессор, x86, x64).

Ответ 2

Также можно использовать cmd файл для сбора контейнеров по шаблону в одну переменную, а затем запустить mstest с этой расширенной переменной:

call "%VS100COMNTOOLS%vsvars32"
@setlocal enabledelayedexpansion enableextensions
@set list=
@for %%x in (.\Bin\Debug\*Test.dll) do set list=!list! /testcontainer:%%x
@set list=%list:~1%

mstest %list%