在使用Team Build 2008构建.NET 4应用程序时,代码覆盖率缺失。

3
我正在使用安装了VS2010 Ultimate的TFS2008构建代理程序构建VS2010解决方案;代码编译正常,测试也都运行正常,但是当涉及到代码覆盖率时,没有任何报告。我已检查.testsettings文件中是否启用了代码覆盖率,并且选择了一些需要检测的程序集。如果在本地开发人员电脑上运行测试,则会成功分析和报告代码覆盖率。
然而,在构建服务器上构建时,不会报告代码覆盖率。我可以看到数据.coverage文件位于构建的TestResults\guid\In\MachineName文件夹中,因此它显然做了一些事情,但是构建日志中没有任何与代码覆盖率有关的内容,也没有警告/错误。
更新:在TFS服务器上检查时,应用程序日志包含以下错误:
Code Coverage Analysis服务无法分析Daily Build>20100812.2(Any CPU / DEBUG)生成的代码覆盖率数据。这经常是由于将同一二进制文件的不同版本发布到特定生成中而引起的。 从运行svcTFSService@W2411193 2010-08-12 12:52:34_Any CPU_Debug的代码覆盖率数据的处理导致抛出以下异常: 创建覆盖信息时出错:加载符号文件时出错。符号和二进制文件应位于与覆盖文件相同的文件夹中或位于符号路径上:D:\Source\CommonPlatform\Common Platform Development Daily Build\Binaries\Debug\Core.dll。
然而,当我在指定的文件夹中查看构建代理程序时,该程序集及其调试符号文件都位于预期位置。
更新2:出于一时兴起,我尝试在构建代理程序上使用VS 2010打开上述提到的data.coverage文件,结果我收到以下错误:
代码覆盖率分析引擎引发了异常:找不到图像文件“D:\Source\CommonPlatform\Common Platform Development Daily Build\Binaries\Debug\Core.dll”。 然而,我可以清楚地看到该文件及其PDB文件均位于文件系统中。
2个回答

3

0

检查符号文件和汇编文件的时间戳是否基本相同。它们之间的差距不应超过一秒钟(最多两秒钟)。如果差距大于这个值,可能是因为你在多个地方构建了 Core.dll,而只有一个地方创建了符号文件。

这可能是一个冒险,但这很可能是一个好的开始。


时间戳只匹配到秒 :-( - David Keaveny
嗯,我猜这是一个不太可能的想法。抱歉。 - Robaticus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接