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





我在许多网站上发现了这个问题的各种迭代,但到目前为止,我还没有找到任何有效的完整答案。我刚刚设置了一些VisualStudio测试代理,它们似乎都在运行我们最初计划在它们上运行的大多数单元测试。然而,当我检查其中一个单元测试时,它在下面的行中失败了:
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\IIntelliTrace\12.0.0\Microsoft.IIntelliTrace.PROFILER.12.0.0.dll"。然后,它在跟踪的同一位置失败:
Test method threw exception:
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException: Failed to get profiler module handle 'C:Program FilesMicrosoft Visual Studio 12.0Common7IDECommonExtensionsMicrosoftIntelliTrace12.0.0Microsoft.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测试代理是否可以在基本级别上使用Fakes运行测试
感谢

我知道这有点老了,所以OP可能得到了他的答案,但对于其他人来说,我向微软开了一张关于这个问题的罚单,经过一个半小时的研究,我们得到了这个问题的答案:

Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException:未能从COR_profiler_path和COR_profiler环境变量解析探查器路径。

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

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

我正在处理的一个项目也遇到了同样的问题。我发现这个问题被注意到了:https://connect.microsoft.com/VisualStudio/feedback/details/832744/unable-to-debug-shims-based-tests-unittestisolation-exception

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

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

旁注——如果你不想为System和mscorlib生成所有的fakes,你可以像这样修改.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-测试将失败。

我希望这能为其他人解决问题——错误非常模糊!

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

生成服务版本是否与已安装的Visual Studio版本同步?

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

  • TFS 2013
  • 生成服务器w/TFS 2013
  • Visual Studio 2015.3已安装在生成服务器中

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

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

最新更新