7

我正在尝试通过 cmdline 执行我们的测试。我使用VS2012,但我总是得到这个错误:

错误

当我在同一台机器上直接在 VS2010 中运行测试时,它们运行良好。我不能将 VS2010 用于 cmdline,因为我们的许可证错误(组装查找不起作用)所以我必须使用 2012。所有 Windows 更新都存在。

有人对 MSTest/VS2012 有类似的问题吗?

4

3 回答 3

6

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.

于 2013-08-01T01:42:52.740 回答
2

我跟着燕华的微软文章链接,找到了一个比删除随机文件更喜欢的解决方法:

使用 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>
于 2014-07-13T06:05:52.887 回答
1

我曾经也有过一样的问题。我刚刚删除了 Visual Studio 2012 的更新 2。步骤:

  • 删除 Visual Studio 2012 的更新 2(通过查看已安装的更新)
  • 重启系统
  • 更改 Visual Studio 2012 的安装(通过卸载或更改程序->更改->修复)
  • 重启系统
于 2013-07-19T09:22:20.390 回答