我正在经历配置TeamCity的痛苦,我已经到了我想为我的代码覆盖率生成报告的时候了。
在运行测试(失败、成功和省略)时,软件生成一个XML文件,其中所有三项都等于零。在TC中检查报告显示0%的覆盖率,尽管在它们旁边有(大量)测试。它看起来如下:
Classes: 0% 0/46 Methods: 0% 0/380 Statements: 0% 0/1533
Diff: 0% Diff: 0% Diff: 0%
或在完整的报告。
Beep 0% (0/1) 0% (0/1) 0% (0/1)
Beep.API 0% (0/6) 0% (0/64) 0% (0/242)
Beep.DAL 0% (0/6) 0% (0/49) 0% (0/362)
...
现在,假设我像个迟钝的香蕉一样慢(考虑到我在TeamCity中缺乏能力)——我可能会忘记做什么(或做了不必要的事情)?我该如何排除故障?!
我正在尽可能地使用默认值。它是与TeamCity捆绑在一起的NUnit,正如DotCover一样。当然,在我的本地环境中,我得到了(至少部分)覆盖范围。
仔细检查构建日志后,我发现了以下消息。
未检测到覆盖的代码。此问题可能是由以下原因之一引起的:
1. Include/exclude模式不正确
2. 编译程序集时没有调试信息
3. .pdb文件不可用
4. Visual Studio代码覆盖为MSTest启用
5. .testrunconfig用于MSTest和Visual Studio代码覆盖未禁用(CodeCoverage部分与enable="true"存在)
(1)应该不是问题,因为我已经使用了:
+:assembly=*
-:assembly=*.Test
(2)和(3)应该不是问题,因为我正在编译发布配置-不应该期望PDB或调试信息。
(4)和(5)应该不是问题,因为我没有在vs中启用类似的功能。
还是我错过了重要的东西?
您是否使用JetBrains的dotCover进行覆盖?
你在哪里读到过滤器的语法?
尝试只排除:
-:*.Test
没有assembly
关键字。
编辑:在最坏的情况下,尝试使用工件和快照依赖关系重新创建配置。
请按照http://log.ld.si/post/teamcity-dependencies-101上的教程创建依赖项,然后再试一次