根据日志,我错过了获取测试覆盖率的信息。可能的原因是:
作为TeamCity的新手,我需要一些指导如何做。
我想念什么?我还能做些什么?
系统是:VS13,TFS10,TC8.2(包含nUnit和dotCoverage的最新版本)
作为测试步骤的日志部分(报告编译步骤中没有错误,退出代码0)。在此之后,只有删除dotCover快照文件。但请注意,没有找到DATA文件,并且XML文件不包含任何数据。
<?xml version="1.0" encoding="UTF-8"?>
<Root DotCoverVersion="2.6.1000.602"
ReportType="TeamCityXml"
CoveragePercent="0"
TotalStatements="0"
CoveredStatements="0"/>
我可以在这做什么?
[10:59:39]步骤2/2:测试(NUnit)(29s)
[10:59:39]开始:C:\ TeamCity \ buildAgent \ plugins \ dotnetPlugin
\ bin \ JetBrains.BuildServer.NUnitLauncher.exe #TeamCityImplicit
[10:59:39]在目录中:C:\ TeamCity \ buildAgent \ work \ 263aa919ed5f7bb8
[10:59:46] JetBrains dotCover Console Runner v2.6.1000.602。版权所有(c)2009-2014 JetBrains s.r.o.保留所有权利。
[10:59:55] [JetBrains dotCover]覆盖会议开始[2014-06-30 10:59:55]
[11:00:02]启动TeamCity NUnit Test Runner
[11:00:02]在.NET Framework v4.0 x64下运行NUnit-2.6.3测试 [11:00:03]AutonomousTesting.dll
[11:00:03]CoverageTest.TestExample.TestEquality
[11:00:03]CoverageTest.TestExample.TestException
[11:00:03]CoverageTest.TestExample.TestInequality
[11:00:03]CoverageTest.TestExample.TestOmission
[11:00:03]测试被忽略:CoverageTest.TestExample.TestOmission
[11:00:05]AutonomousTesting.dll
[11:00:05]CoverageTest.TestExample.TestEquality
[11:00:05]CoverageTest.TestExample.TestException
[11:00:05]CoverageTest.TestExample.TestInequality
[11:00:05]CoverageTest.TestExample.TestOmission
[11:00:05]测试被忽略:CoverageTest.TestExample.TestOmission
[11:00:07] [JetBrains dotCover]覆盖会议结束[2014-06-30 11:00:07]
[11:00:07] [JetBrains dotCover]覆盖结果后处理开始[2014-06-30 11:00:07]
[11:00:08] [JetBrains dotCover]覆盖结果后处理完成[2014-06-30 11:00:08]
[11:00:09] ## teamcity [importData type =&#39; dotNetCoverage&#39;工具=&#39; dotcover&#39;文件=&#39; C:\ TeamCity的\ buildAgent \ TEMP \ buildTmp \ coverage_dotcover16594618384737853441.data&#39;]
[11:00:09]从&C; \ TeamCity \ buildAgent \ temp \ buildTmp \ coverage_dotcover16594618384737853441.data&#39;导入数据(8.38 KB)与dotNetCoverage&#39;处理器 [11:00:09]流程退出,代码为0 [11:00:09]等待1个服务流程完成
[11:00:09]处理1份报道报告
[11:00:09]由dotcover为文件生成覆盖率报告:[C:\ TeamCity \ buildAgent \ temp \ buildTmp \ coverage_dotcover16594618384737853441.data]
[11:00:09]获取dotCover版本
[11:00:09]启动dotCover:C:\ TeamCity \ buildAgent \ tools \ dotCover \ dotCover.exe版本C:\ TeamCity \ buildAgent \ temp \ buildTmp \ dotCover4472367238745438467Version
[11:00:09]输出:JetBrains dotCover Console Runner v2.6.1000.602。版权所有(c)2009-2014 JetBrains s.r.o.保留所有权利。
[11:00:09] dotCover退出代码:0
[11:00:09]使用DotCover 2.6.x命令设置
[11:00:09]合并dotCover报道(9s)
[11:00:19]开始dotCover:C:\ TeamCity \ buildAgent \ tools \ dotCover \ dotCover.exe合并C:\ TeamCity \ buildAgent \ temp \ buildTmp \ dotcover4719506578346509917.xml
[11:00:19]输出:JetBrains dotCover Console Runner v2.6.1000.602。版权所有(c)2009-2014 JetBrains s.r.o.版权所有。 [JetBrains dotCover]快照合并开始[2014-06-30 11:00:18] [JetBrains dotCover]来源快照数量:1 [JetBrains dotCover]快照合并完成[2014-06-30 11:00:19]
[11:00:19] dotCover退出,代码为:0
答案 0 :(得分:1)
我跟着这个漂亮的小tutorial让它为我工作。如果你没有得到任何结果,这里提到你可以试试的东西:
小提示:如果你做的一切正确但没有生成报告,请查看BuildLog。在第一次尝试时我得到了这个错误:
解决方案:
无法读取源文件&gt;'C:\ TeamCity \ buildAgent \ temp \ buildTmp \ dotcover8583844779204955574.xml'。找不到路径'C:\ Windows \ system32 \ config \ systemprofile \ AppData \ Local \ Temp \ 4q-kqg6z.tmp'的一部分。
在“C:\ Windows \ system32 \ config \ systemprofile \ AppData \ Local”中创建搜索到的“Temp”文件夹
通常它不存在,因此出现错误。在此之后它起作用。
如果这不起作用,那么您可能需要提供更多信息,以便我们帮助您推断出错误。
例如,您的路径是什么,您安装的所有版本的版本,您为构建配置启用了哪些设置等。
编辑如你所说,你已经有了这个工作,我想知道你是否还有以前工作版本的构建日志?在你的同事弄乱之前。有没有机会在构建日志工作时和不工作日之间做差异?它可能会让你知道他改变了什么。
我设法制作了一个全新的配置,以测试生成覆盖所需的最低工作量。这正是我采取的步骤。也许这里有一些你会发现你做得与众不同的东西。
在localhost:8080的主TeamCity屏幕上,点击“创建项目”
单击“添加构建配置”
单击“VCS设置”
单击“创建并附加VCS根目录”
点击“添加构建步骤”
点击“添加构建步骤”
点击“项目”
点击“运行...”
毕竟,构建应该已经生成了覆盖范围。祝你好运!
答案 1 :(得分:1)
Coverage通过检测已编译的二进制文件来工作,以便在运行时吐出信息。设置完成后,您的单元测试将在运行时将信息输出到某种结果文件中。测试完成后,您可以分析该结果文件。
demoncodemonkey的答案中的教程使得TeamCity看起来实际上正在进行测试覆盖。我非常肯定事实并非如此。 TeamCity很可能与您的工具接口并隐藏您的细节。但如果它不起作用,隐藏细节可能会有所帮助!
我的第一步是弄清楚如何在没有TeamCity的情况下从命令行运行该工具。一旦你能做到这一点,你就可以弄清楚你需要使用什么样的TeamCity配置来获得相同的结果。此链接是dotCover CLI文档。
我们使用Jenkins和许多linux类型的工具 - 但是尝试手工逼近构建/测试一直是找出它在服务器上不起作用的最快方法。
答案 2 :(得分:1)
我遇到的问题是,虽然我的测试已执行并且我从中获得了结果,但结果中没有显示测试覆盖率。原因是在“装配体过滤器”选择的覆盖范围内,我使用了:
+:MySolution.*.dll
+:MySolution.*.exe
-:MySolution.*.Tests.dll
但是,要计算覆盖率结果,您必须从过滤器中删除.DLL扩展名,以便它变为:
+:MySolution.*
-:MySolution.*.Tests
然后结果神奇地流过。