我正在尝试通过 cmdline 执行我们的测试。我使用VS2012,但我总是得到这个错误:
当我在同一台机器上直接在 VS2010 中运行测试时,它们运行良好。我不能将 VS2010 用于 cmdline,因为我们的许可证错误(组装查找不起作用)所以我必须使用 2012。所有 Windows 更新都存在。
有人对 MSTest/VS2012 有类似的问题吗?
我正在尝试通过 cmdline 执行我们的测试。我使用VS2012,但我总是得到这个错误:
当我在同一台机器上直接在 VS2010 中运行测试时,它们运行良好。我不能将 VS2010 用于 cmdline,因为我们的许可证错误(组装查找不起作用)所以我必须使用 2012。所有 Windows 更新都存在。
有人对 MSTest/VS2012 有类似的问题吗?
If you want to keep VS 2012 update 2, 3, or 4 installed, you can try the below workaround:
Run the below commands in the command line:
DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver.ni.dll*
DEL /S %windir%\*Microsoft.VisualStudio.QualityTools.ExecutionCommon.ni.dll*
This is a workaround provided by Microsoft guys.
You need run this batch again after you install Visual Studio updates or sometime even Windows Updates.
我跟着燕华的微软文章链接,找到了一个比删除随机文件更喜欢的解决方法:
使用 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>
我曾经也有过一样的问题。我刚刚删除了 Visual Studio 2012 的更新 2。步骤: