MSTest.exe(VS2012)崩溃了QTAgent32.exe

7
我正在尝试通过命令行执行我们的测试。我使用的是VS2012,但总是出现这个错误:当我在同一台机器上直接在VS2010中运行测试时,它们可以正常运行。我不能在命令行中使用VS2010,因为我们的许可证有误(程序集查找无法工作),所以我必须使用2012。所有Windows更新都已安装。是否有人在MSTest / VS2012中遇到过类似问题?

这是一个ExecutionEngineException,在CLR中是一个严重的崩溃。通常是由于不受管理的代码破坏了垃圾收集堆而引起的。测试失败了,也许。无论你遇到什么神秘的许可问题,修复它都比尝试修复这个崩溃要容易得多。 - Hans Passant
谢谢你的提示。奇怪的是,这些测试在我今天设置的另一个构建代理上运行良好。我们有VS2010专业版许可证,不支持带有程序集发现的MSTest cmdline测试,而我们的IT部门不会购买升级许可证。 - icywiener
看起来VS2012的Update1或2会破坏.NET 3.5的测试,所以我们进行了完全卸载并重新安装,没有安装更新,现在我们的测试又可以运行了。 - icywiener
3个回答

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* 

这是微软工作人员提供的解决方案

在安装 Visual Studio 更新或者有时甚至是 Windows 更新后,您需要再次运行此批处理文件。


2
我遵循了Yanhua的Microsoft文章链接,并找到了一个比随机删除文件更好的解决方法: 使用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>

这也是Microsoft推荐的 http://blogs.msdn.com/b/bharry/archive/2013/08/19/vs-tfs-2012-4-update-4-rc-2-is-available.aspx - Tomas Kubes

1
我也曾经遇到过同样的问题。我只是删除了Visual Studio 2012的更新2。
步骤:
  • 删除Visual Studio 2012更新2 (通过查看已安装更新)
  • 重新启动系统
  • 更改Visual Studio 2012的安装方式 (通过卸载或更改程序->更改->修复)
  • 重新启动系统

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接