Gallio错误:找不到MSTest可执行文件

时间:2013-11-15 10:57:11

标签: c# visual-studio-2012 mstest sonarqube gallio

当我尝试用我的声纳跑步者分析我的VS2012 C#解决方案时,我遇到了一个恼人的Gallio问题。当Gallio尝试启动我的单元测试时,我可以在日志中找到这个问题:

  [error] Assembly XXXX   
  Cannot run tests because MSTest executable was not found

我已经尝试了一些解决方案暴露herehere的命题(我已经为VS 2012安装了代理,我已经添加了一个注册表项,其中包含我的VS2012安装路径)但似乎没有工作。

提前感谢您的帮助。

编辑:

似乎这个问题来自Gallio源代码中的硬编码注册表值,因为当我尝试将VS2010的InstallDir注册表项添加到指向我的VS2012安装时,我可以看到一条新的错误消息。

此新错误是相对于以下DLL的I / O异常:“Microsoft.VisualStudio.QualityTools.CommandLine.dll”版本10.0.0.0,我可以在我的GAC_MSIL目录中找到但在版本11中。结论是Gallio与VS2012和相应版本的MSTest不完全兼容。

我打算进行调查,找到一种方法来手动生成Sonar能够存储的单元测试报告。

编辑2:

现在终于无法在声纳中收集mstest报告了。我找到的唯一解决方案是将使用MSTest进行的每个单元测试转换为NUnit测试,以便能够使用gallio运行它并将结果收集到我的Sonar服务器中。

2 个答案:

答案 0 :(得分:2)

将以下内容添加到位于C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config

的machine.config中
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.CommandLine"
                publicKeyToken="b03f5f7f11d50a3a"
                culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0"
               newVersion="11.0.0.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

然后,您需要添加一个名为InstallDir的注册表项,其值为     “InstallDir =&gt; C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \” 到以下位置     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\ VisualStudio的\ 10.0

然后运行以下命令     regsvr32“C:\ YourSonarInstalation \ opencover \ x86 \ OpenCover.Profiler.dll

这里正在讨论这个问题。几天前发布了上述潜在解决方案。 https://code.google.com/p/mb-unit/issues/detail?id=899

答案 1 :(得分:1)

对于Visual Studio 2013和.net 4.5这是一个类似的过程。

将以下内容添加到位于C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config和/或C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config:<的machine.config中/ p>

    <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.CommandLine"
                publicKeyToken="b03f5f7f11d50a3a"
                culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0"
               newVersion="12.0.0.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

然后,您需要添加一个名为InstallDir的注册表项,其值为&#34; InstallDir =&gt; C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \&#34;到以下位置HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 10.0

然后运行以下命令regsvr32&#34; C:\ Program Files(x86)\ OpenCover \ x86 \ OpenCover.Profiler.dll&#34;