-->

如何麻烦拍摄中的TeamCity缺少测试覆盖?(How to trouble-shoot missi

2019-10-20 08:26发布

根据日志我缺少的信息以获得测试覆盖率。 可能的原因是:

  1. 包含/排除模式是不正确的
  2. 组件是没有调试信息编译
  3. PDB文件不可用
  4. Visual Studio代码覆盖率为MSTest的启用
  5. TESTRUNCONFIG用于MSTest的和Visual Studio代码覆盖未被禁用

作为在TeamCity的新手,我需要怎么做一些指导。

  1. 我已经包括由+所有dll:* DLL。 不排斥的时刻,但我试图通过省略测试本身- :*测试*。
  2. 我编译使用DEBUG曲线和结果放在斌/调试服务器和OBJ /调试目录上。 有没有发布的。
  3. 我在服务器上.source /斌/调试 PDB文件。
  4. 因为我运行的TeamCity服务器上的NUnit的和dotCover,没有VS参与。
  5. 因为我运行的TeamCity服务器上的NUnit的和dotCover,没有VS参与。

我怎么错过? 我能做些什么吗?

编辑

该系统是:VS13,TFS10,TC8.2(最新的可用附带的NUnit的和dotCoverage)

日志的一部分是所述检测步骤(在编译步骤报道,退出代码0没有错误)。 在此之后,这里只有去除dotCover快照文件。 但是请注意,这还有待没有找到数据文件和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 \插件\ dotnetPlugin
\ BIN \ JetBrains.BuildServer.NUnitLauncher.exe #TeamCityImplicit
[10点59分39秒],在目录:C:\ TeamCity的\ buildAgent \工作\ 263aa919ed5f7bb8
[10点59分46秒] JetBrains的dotCover控制台转轮v2.6.1000.602。 版权所有(C)2009-2014 JetBrains公司SRO保留所有权利。
[10时59分55秒] [JetBrains公司dotCover]覆盖率会话启动[2014-06-30 10点59分55秒]
[11:00:02]开始的TeamCity NUnit的测试运行
[11:00:02]下运行的.NET Framework 4.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类型= 'dotNetCoverage' 工具= 'dotcover' 文件= 'C:\ TeamCity的\ buildAgent \ TEMP \ buildTmp \ coverage_dotcover16594618384737853441.data']
[11时00分09秒]从导入数据 'C:\ TeamCity的\ buildAgent \ TEMP \ buildTmp \ coverage_dotcover16594618384737853441.data'(8.38 KB)与 'dotNetCoverage' 处理器[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控制台转轮v2.6.1000.602。 版权所有(C)2009-2014 JetBrains公司SRO保留所有权利。
[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控制台转轮v2.6.1000.602。 版权所有(C)2009-2014 JetBrains公司SRO保留所有权利。 [JetBrains的dotCover]快照合并开始[2014-06-30 11时00分18秒] [JetBrains的dotCover]来源的快照数:1 [JetBrains的dotCover]快照合并完成的[2014-06-30 11时00分十九秒]
[11点00分19秒] dotCover退出,代码:0

Answer 1:

我跟着这个可爱的小教程 ,以得到它为我工作。 这里的东西它提到,你可以尝试,如果你没有得到任何结果:

小提示:如果你做的一切权利,但没有报告将产生看一看到BuildLog。 在第一次尝试时,我得到这个错误:

解:

无法读取源文件> 'C:\ TeamCity的\ buildAgent \ TEMP \ buildTmp \ dotcover8583844779204955574.xml'。 找不到路径的一部分 'C:\ WINDOWS \ system32 \设置\ systemprofile \应用程序数据\本地的\ Temp \ 4Q-kqg6z.tmp'。

在创建搜索“TEMP”文件夹“C:\ WINDOWS \ system32 \设置\ systemprofile \应用程序数据\本地”

通常它doesn't存在,因为这个错误出现。 在此之后它的工作原理。

如果不工作,那么你可能需要提供更多信息,以便我们帮你演绎出了什么问题。

例如,你有什么路径,你装什么版本的一切,什么设置你有你的生成配置,等等启用


编辑:正如你所说,你已经有了这方面的工作,我不知道如果你仍然有先前工作构建构建日志? 之前,你的同事把事情搞糟。 有没有什么可以做的构建日志之间的差异时,它是工作,当它没有任何机会呢? 它可能给你什么,他改变了线索。


我设法让一个全新的配置,测试生成覆盖所需的最低工作。 这也正是我所采取的步骤。 也许有东西在这里,你会发现你已经做了不同。

从本地主机的主屏幕的TeamCity:8080中,单击“创建项目”

  • 名称:MyProjectName
  • 点击“创建”

点击“添加构建配置”

  • 名称:调试

点击“VCS设置”

点击“创建和附加VCS根”

  • VCS类型:混帐
  • VCS根名称:MyProjectName混帐回购协议
  • 获取URL: HTTPS://myusername@bitbucket.org/myusername/myprojectname.git
  • 验证方法:密码(输入到位桶的用户名和密码)
  • 检查间隔:自定义,600秒
  • 点击“测试连接”,它应该走向绿色。 点击“保存”

点击“添加生成步骤”

  • 亚军类型:的MSBuild
  • 步骤名称:建立MyProjectName
  • 构建文件路径:MyProjectName.sln
  • MSBuild的版本:Microsoft .NET框架4.5
  • MSBuild的ToolsVersion:4.0
  • 运行平台:64
  • 点击“保存”

点击“添加生成步骤”

  • 亚军类型:NUnit的
  • 步骤名称:运行MyProjectName测试
  • .NET运行平台:64
  • .NET运行时版本:4.0
  • 从运行测试:MyProjectName.Tests \ BIN \调试\ MyProjectName.Tests.dll
  • .NET覆盖工具:Jetbrains的dotCover
  • 点击“保存”

点击“项目”

点击“运行...”

毕竟是,构建应该已经产生的报道。 祝好运!



Answer 2:

康拉德,我遗憾的是不知道够不够(什么?)有关.NET或团队城告诉你什么是错了你的设置 - 所以这将是更多的将是什么我的,如果我有解决它的指导方针的。

村村通工程由让他们吐出的信息,因为它们运行插装编译的二进制文件。 当它被设置,你的单元测试,运行时,可以输出信息到某种形式的结果文件。 测试完成后,您可以分析的结果文件。

在demoncodemonkey的回答教程使它看起来像TeamCity的实际上是在做测试覆盖率。 我敢肯定 ,这是情况并非如此。 TeamCity的是最有可能与你的工具接口,并从你隐藏的细节问题。 但是,如果它只是不工作,有隐藏的细节可以小于有帮助!

我的第一步是要弄清楚如何运行不TeamCity的命令行工具。 一旦你能做到这一点,你可以计算出你需要使用,以获得相同的结果是什么TeamCity的配置。 这个环节是dotCover CLI文档。

http://www.jetbrains.com/dotcover/webhelp/dotCover__Setting_up_Coverage_Analysis_JetBrains_TeamCity.html

我们使用詹金斯和大量的Linux型工具 - 但试图接近手工编译/测试一直是弄清楚为什么它不工作在服务器上的最快方式。



Answer 3:

我有问题是,虽然我的测试中执行,我从他们身上得到的结果,有结果中没有显示的测试覆盖率。 这样做的原因是,在覆盖组件的过滤器的选择,我用的是:

+:MySolution.*.dll
+:MySolution.*.exe
-:MySolution.*.Tests.dll

然而,对于要计算的覆盖效果,你必须删除从过滤器.DLL扩展,使之成为:

+:MySolution.*
-:MySolution.*.Tests

然后结果就神奇地流过。



文章来源: How to trouble-shoot missing test coverage in TeamCity?