15

複数の testcontainer 値を手動でハードコードするのではなく、ワイルドカードの testcontainer 値をコマンドライン mstest.exe に渡すことは可能ですか? そのような

Mstest.exe /testcontainer:テスト.dll

tfs 2012 アップグレード template.xaml ビルド プロセスで mstest を手動で呼び出して、デフォルトの template.xaml でテストを実行するのと同様の自動検出方法のように動作させたいと考えています。

そうでない場合、これをバットスクリプトに書き込んで、特定の開始フォルダーからフォルダーをループできますか?

4

2 に答える 2

29

MSTesttestcontainer のワイルドカード パラメータを使用しません (コマンド ライン オプションのリファレンスについては、こちらを参照してください)。ただし、次のように、複数の /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>

(変換のためのhttps://stackoverflow.com/a/2770682/62662に感謝します)

i をファイル ( testall.proj) に保存し、 で実行するMSBuild testall.projか、バッチ ファイルを作成して実行します。

また、mstest は提供されたすべてのテスト コンテナーを 1 つのアプリケーション ドメインに読み込むため、同じプラットフォーム ターゲット (任意の cpu、x86、x64) をサポートする必要があることに注意してください。

于 2012-12-11T23:28:01.947 に答える
3

cmd ファイルを使用して、ワイルドカードを使用してコンテナーを 1 つの変数に収集し、この変数を展開して 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%
于 2013-04-11T13:51:05.430 に答える