当我尝试使用声纳运行器分析我的VS2012 C#解决方案时,Gallio遇到了一个烦人的问题。当 Gallio 尝试启动我的单元测试时,我可以在日志中找到此问题:
[error] Assembly XXXX
Cannot run tests because MSTest executable was not found
我已经尝试了这里和这里公开的一些解决方案(我已经安装了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服务器中收集结果。
将以下内容添加到位于 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 => C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\"到以下位置 HKEY_LOCAL_MACHINE\软件\Wow6432Node\Microsoft\VisualStudio\10.0
然后运行以下命令 regsvr32 "C:\YourSonarInstalation\opencover\x86\OpenCover.Profiler.dll
这里正在讨论这个问题。上面的潜在解决方案是在几天前发布的。https://code.google.com/p/mb-unit/issues/detail?id=899
对于 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
: <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 => C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\"的注册表项添加到以下位置 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0
然后运行以下命令 regsvr32 "C:\Program Files (x86)\OpenCover\x86\OpenCover.Profiler.dll"