【问题标题】:MSTest.exe (VS2012) crashes QTAgent32.exeMSTest.exe (VS2012) 使 QTAgent32.exe 崩溃
【发布时间】:2016-04-11 17:27:50
【问题描述】:

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

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

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

【问题讨论】:

  • 这是一个 ExecutionEngineException,CLR 中的一次硬崩溃。通常由破坏垃圾收集堆的非托管代码引起。测试失败,也许。无论您遇到什么神秘的许可问题,都可能比尝试修复此崩溃要容易很多
  • 感谢您的提示。奇怪的是,这些测试在我今天设置的另一个构建代理上运行良好。我们有 VS2010 Prof 许可证,不支持 MSTest cmdline tets 和程序集发现,我们的 IT 不会购买升级许可证。
  • 似乎 VS2012 的 Update1 或 2 破坏了 .NET 3.5 的测试,因此完全卸载并重新安装而没有更新,现在我们的测试再次运行。

标签: c# visual-studio-2012 mstest


【解决方案1】:

如果您想继续安装 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 更新后再次运行此批处理。

【讨论】:

    【解决方案2】:

    我关注了燕华的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>
    

    【讨论】:

    【解决方案3】:

    我也遇到了同样的问题。我刚刚删除了 Visual Studio 2012 的更新 2。 步骤:

    • 删除 Visual Studio 2012 的更新 2(通过查看已安装的更新)
    • 重启系统
    • 更改 Visual Studio 2012 的安装(通过卸载或更改程序->更改->修复)
    • 重启系统

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-09
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      相关资源
      最近更新 更多