在Visual Studio 2013测试代理上使用Shims运行测试

时间:2014-11-04 19:24:49

标签: visual-studio unit-testing visual-studio-2013 microsoft-fakes



我已经在许多网站上找到了这个问题的各种迭代,但到目前为止,我还没有找到任何提供完整答案的东西。 我刚刚设置了许多Visual Studio测试代理,这些代理似乎都在运行,并且正在运行我们计划在其上运行的大多数单元测试。然而,当我来检查其中一个单元测试时,它就失败了: using (ShimsContext.Create())

堆栈跟踪:
Result Message:
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException: Failed to resolve profiler path from COR_PROFILER_PATH and COR_PROFILER environment variables.
阅读了其他一些帖子后,我在测试代理上安装了Visual Studio 2013,并确认它将在本地运行测试。然后我将COR_PROFILER_PATH设置为我的机器上使用的分析器,该分析器安装在:“C:\ Program Files \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ IntelliTrace \ 12.0.0 \ Microsoft.IntelliTrace.Profiler .12.0.0.dll”。 然后它在跟踪的同一个地方失败了:
Test method threw exception:
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException: Failed to get profiler module handle 'C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\12.0.0\Microsoft.IntelliTrace.Profiler.12.0.0.dll'. The specified module could not be found ---> System.ComponentModel.Win32Exception: The specified module could not be found

建议是分析器已经在一个单独的过程中加载并且无法使用。有没有人在这个或类似的设置上取得任何成功?在基础层面上,Visual Studio Test Agents可以使用Fakes运行测试吗? 感谢

3 个答案:

答案 0 :(得分:4)

我知道这有点老了,所以OP可能得到了他的答案,但对于其他任何人,我在这个问题上与微软开了一张票,我们在看了一个半小时后得到了答案。设置此问题:

Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException:无法从COR_PROFILER_PATH和COR_PROFILER环境变量解析探查器路径。

,是我使用 mstest.exe 而我应该使用 vstest.console.exe 。在我的情况下,这是因为我现在在我的代码中进行了Fakes测试。

我正在使用Visual Studio 2013更新4。

答案 1 :(得分:1)

我正在处理与我正在进行的项目相同的问题。我发现这个问题: https://connect.microsoft.com/VisualStudio/feedback/details/832744/unable-to-debug-shims-based-tests-unittestisolation-exception

有一个附加项目,所以我下载了项目并运行了唯一的单元测试。相同的错误 - 单元测试不成功。但是,我右键点击了System下的References,然后点击了Add Fakes Assembly。一旦它产生了Systemmscorlib的假货,瞧!测试变为绿色。

我能够在我的项目中重现这个问题 - 我没有为System生成假货。一旦我为System生成了它们,我的测试从红色变为绿色!

附注 - 如果您不想生成System和mscorlib的所有假货,您可以像这样修改.fakes文件。

mscorlib.fakes:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" Version="4.0.0.0"/>
  <StubGeneration Disable="true" />
  <ShimGeneration Disable="true" />
</Fakes>

System.fakes:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="System" Version="4.0.0.0"/>
  <StubGeneration Disable="true" />  
</Fakes>

我无法为System.fakes禁用ShimGeneration - 测试会失败。

我希望这可以解决其他人的问题 - 错误非常模糊!

答案 2 :(得分:0)

(我假设您的测试代理也是构建代理。)

构建服务版本是否与安装的Visual Studio版本同步?

我在以下环境中遇到了同样的问题:

  • TFS 2013
  • 使用TFS 2013构建服务器
  • 安装在构建服务器中的Visual Studio 2015.3

当我将构建服务器上的TFS版本更新到2015.3时,问题就停止了。

我知道它可能没有意义,但解决了这个问题,因为TFS 2015 XAML Build与TFS 2013.4应用层兼容。