我正在尝试通过cmdline执行我们的测试。 我使用VS2012,但我总是得到这个错误:
当我在同一台机器上直接在VS2010中运行测试时,它们运行良好。 我不能将VS2010用于cmdline,因为我们有错误的许可证(程序集查找不起作用)所以我必须使用2012。 所有Windows更新都存在。
有人与MSTest / VS2012有类似的问题吗?
答案 0 :(得分:6)
如果您想要安装VS 2012更新2,3或4,可以尝试以下解决方法:
在命令行中运行以下命令:
DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver.ni.dll*
DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.ExecutionCommon.ni.dll*
这是微软人员提供的workaround。
您需要在安装Visual Studio更新或有时甚至是Windows更新后再次运行此批处理。
答案 1 :(得分:2)
我跟着Yanhua的Microsoft article link找到了一个比删除随机文件更好的解决方法:
使用vstest.console.exe而不是mstest.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>
答案 2 :(得分:1)
我遇到了同样的问题。我刚刚删除了Visual Studio 2012的更新2。 步骤进行: