Web でかなりの調査を行い、いくつかの設定を試しましたが、コマンド ラインで Visual Studio 2012 で MsTest を実行したときの動作を再現できませんでした。
私たちのソリューションは、ソリューション レベル (例: C:\MySolution\bin) に存在する同じ bin フォルダーにビルドされる多くのプロジェクトで構成されています。これがテスト対象のコード (CUT) です。テストは、独自のソリューションに存在し、独自の bin フォルダー (例: C:\MySolution\Tests\bin) にビルドされる別のプロジェクトにグループ化されます。非常に多くのプラグインがあるため、テストを実行するときに、すべてを TestResults フォルダーにコピーするのではなく、MsTest が CUT bin フォルダーを参照するようにします。Visual Studio 2012 でこれを実現するには、.testrunconfig を編集し、".\bin" を "ロードするアセンブリのルート フォルダー" として指定します (testrunconfig の編集時に [ユニット テスト] タブで)。
ここで、VS2012 と同じ方法で MsTest を実行する .bat ファイルを作成して、テストを実行するためだけに Visual Studio の起動を省略できるようにしたいと考えました。私は現在、コマンド ラインで MsTest を実行する方法に取り組んでいますが、かなりイライラしています。これは私が試したものです(VSコマンドプロンプトのソリューションレベルでコマンドを実行しました):
MsTest /testcontainer:Tests\bin\Tests.dll
これはまったく機能しませんでした。Tests.dll が実行する必要がある、参照されている dll を見つけることさえできませんでした。そのため、構成を再利用して再度実行しました。
MsTest /runconfig:LocalTestRun.testrunconfig /testcontainer:Tests\bin\Tests.dll
それでもうまくいきませんでした。テストを開始できましたが、すべて失敗しました。この種の警告をたくさん受け取りました
警告: テスト実行配置の問題: テスト コンテナー 'C:\MySolution\Tests\bin\tests.dll' によって直接的または間接的に参照されているアセンブリまたはモジュール '....' が見つかりませんでした。
そして最後にこう言いました。
構成されたアプリケーション ベース ディレクトリ 'C:\MySolution\TestResults\User_Machine 2013-07-28 13_16_59\Out\bin' が存在しません。代わりに test ディレクトリが使用されます。
applicationBaseDirectory
testrunconfigのオプションを絶対パス(C:\MySolution\bin)に変更すると、うまくいきました。それでも、次のような多くの警告が表示されます。
警告: テスト実行配置の問題: テスト コンテナー 'C:\MySolution\Tests\bin\tests.dll' によって直接的または間接的に参照されているアセンブリまたはモジュール '....' が見つかりませんでした。
とにかく、絶対パスを指定するのは現実的な解決策ではありません。別の相対的なアセンブリ ベース ディレクトリを使用して、コマンド ラインで MsTest を実行するにはどうすればよいですか?
私の LocalTestRun.testrunconfig は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="Local Test Run" id="...." xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Description>This is a default test run configuration for a local test run.</Description>
<Deployment>
<DeploymentItem filename="Tests\....\Resources\" />
</Deployment>
<Execution hostProcessPlatform="MSIL">
<TestTypeSpecific>
<UnitTestRunConfig testTypeId="....">
<AssemblyResolution applicationBaseDirectory=".\bin">
<TestDirectory useLoadContext="true" />
</AssemblyResolution>
</UnitTestRunConfig>
<WebTestRunConfiguration testTypeId="....">
<Browser name="Internet Explorer 7.0">
<Headers>
<Header name="User-Agent" value="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" />
<Header name="Accept" value="*/*" />
<Header name="Accept-Language" value="{{$IEAcceptLanguage}}" />
<Header name="Accept-Encoding" value="GZIP" />
</Headers>
</Browser>
</WebTestRunConfiguration>
</TestTypeSpecific>
<AgentRule name="LocalMachineDefaultRole">
</AgentRule>
</Execution>
</TestSettings>