コマンドライン経由でテストを実行しようとしています。VS2012 を使用していますが、常に次のエラーが発生します。
同じマシンのVS2010でテストを直接実行すると、正常に実行されます。ライセンスが間違っているため(アセンブリの検索が機能しないため)、コマンドラインにVS2010を使用できないため、2012を使用する必要があります。すべてのWindowsアップデートが存在します。
誰かが MSTest/VS2012 で同様の問題を抱えていましたか?
コマンドライン経由でテストを実行しようとしています。VS2012 を使用していますが、常に次のエラーが発生します。
同じマシンのVS2010でテストを直接実行すると、正常に実行されます。ライセンスが間違っているため(アセンブリの検索が機能しないため)、コマンドラインにVS2010を使用できないため、2012を使用する必要があります。すべてのWindowsアップデートが存在します。
誰かが MSTest/VS2012 で同様の問題を抱えていましたか?
VS 2012 update 2、3、または 4 をインストールしたままにしたい場合は、次の回避策を試すことができます。
コマンド ラインで次のコマンドを実行します。
DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver.ni.dll*
DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.ExecutionCommon.ni.dll*
これは、Microsoft の担当者が提供する回避策です。
Visual Studio の更新プログラムまたは場合によっては Windows Update をインストールした後、このバッチを再度実行する必要があります。
Yanhua のMicrosoft 記事のリンクをたどったところ、ランダムなファイルを削除するよりも気に入った回避策が見つかりました。
mstest.exe の代わりに vstest.console.exe を使用します。
vstest.console.exe の引数は異なることに注意してください。test.dll のスペースで区切られたリストが必要です
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "TestProject1.dll"
同じことを行う私のmsbuildセットアップは次のとおりです。
<PropertyGroup>
<MSTEST>"$(VS110COMNTOOLS)..\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"</MSTEST>
</PropertyGroup>
...
<Target Name="MyTests" >
<ItemGroup>
<!-- These Items should be evaluated at Target runtime -->
<TestFiles Include="..\Tests\**\bin\$(Configuration)\*.Test.dll" />
</ItemGroup>
<!-- Run Tests -->
<PropertyGroup>
<!--TestSuccessOrNot is the property specify whether the Test is sucess or not -->
<TestSuccessOrNot>1</TestSuccessOrNot>
</PropertyGroup>
<Exec Command="$(MSTEST) @(TestFiles, ' ')" >
<Output TaskParameter="ExitCode" PropertyName="TestSuccessOrNot"/>
</Exec>
<Error Text="Tests Failed" Condition="$(TestSuccessOrNot) == '1'" />
</Target>
私は同じ問題を抱えていました。Visual Studio 2012 の更新プログラム 2 を削除しました。手順: