问题标签 [cobertura]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6326 浏览

maven-2 - Maven2 Multiproject Cobertura 在 mvn 站点构建期间报告问题

我们有一个多项目,我们正在尝试运行 Cobertura 测试覆盖率报告,作为我们 mvn 站点构建的一部分。我可以让 Cobertura 在子项目上运行,但它错误地报告 0% 的覆盖率,即使报告仍然突出显示单元测试命中的代码行。

我们正在使用 mvn 2.0.8。我试过跑步mvn clean sitemvn clean site:stagemvn clean package site。我知道测试正在运行,它们出现在万无一失的报告中(txt/xml 和站点报告)。我在配置中遗漏了什么吗?Cobertura 是否不适用于多项目?

这是在父 .pom 中:

我尝试在子 .poms 中使用和不使用以下内容运行它:

我在构建的输出中得到了这个:

报告如下所示: 科贝图拉报告

0 投票
4 回答
4215 浏览

java - Cobertura 拒绝承认代码被覆盖

我正在使用 Maven (2) Cobertura 插件来创建代码覆盖率报告,并且我在方法中使用了以下存根:

我知道我需要记录异常等,但这不是现在的重点……Cobertura 拒绝承认打印堆栈跟踪后的行已被覆盖。也就是说,System.err.println语句之前带有“}”的行没有显示为已覆盖。之前,方法的结尾大括号没有显示为被覆盖,因此System.err声明。知道如何说服 cobertura 的 maven 插件,因为该System.err.println语句已被涵盖,因此必须涵盖结束大括号?

哦,是的,我使用模拟安全管理器来抛出安全异常,因为这是我发现的让测试在System.exit调用后继续执行的最简单方法。

0 投票
3 回答
9693 浏览

java - 如何让 Cobertura 因代码覆盖率低而无法构建 M2

如果线路或分支覆盖率低于给定阈值,我正在尝试将我的 WAR 项目构建配置为失败。我一直在使用优秀书籍Java Power Tools第 455 页提供的配置,但没有成功。这是我项目的 Maven 2 POM 的相关片段:

正如我所说,覆盖率报告工作正常,问题是如果线路或分支覆盖率低于我指定的阈值,“安装”目标不会失败。有没有人有这个工作,如果有,你的 POM 是什么样的,你使用的是哪个版本的 Cobertura 和 Maven?我正在使用 Maven 2.0.9 和 Cobertura 2.2。

我试过谷歌搜索和阅读 Cobertura 文档,但没有运气(至少可以说后者很少)。

0 投票
6 回答
12356 浏览

java - 生成一个包含 Cobertura 报告的 maven 站点

我有一些项目已经通过 maven 进行站点生成,我想在其中集成 cobertura 报告,但我似乎运行的任何 maven 目标都不会生成本地预览供我查看,其中包括 Cobertura 报告地点。在我将 pom 更改提交到 repo 并生成损坏的站点之前,我想确保它们正确生成。

以下是我添加到 maven poms(父级和模块)中的内容,但是我在运行时看到的站点mvn site:run不包括 cobertura 报告:

我应该使用什么 Maven 命令来生成带有 cobertura 报告的站点?或者,我应该(另外)添加什么以使站点生成包含 cobertura 报告?

0 投票
1 回答
5135 浏览

java - 如何使 Cobertura/Emma 与 Eclipse 应用程序配合得很好?

我的公司正在升级我们的构建系统以使用 Buckminster(进展顺利)。如果我们可以在我们处理代码时自动生成一些他们用于代码的指标,经理们自然会喜欢它——其中一个指标是单元测试的覆盖率。

之前的构建是基于 PDE 的,它产生了一个单独的无头应用程序,它解析上下文中的所有插件,在它们内部查找测试类,将所有测试用例放入一个更大的套件中,然后以编程方式运行它,通过JUnitResultFormatter.startTestSuite(). 在此过程中,它为特定元数据(版权标记等)添加了一些本地测试,并测试了包依赖性。

似乎我应该能够为测试应用程序导出产品,使用我选择的覆盖工具对其进行检测,然后运行它;但是,看起来两个覆盖工具都想知道他们正在处理的整个类路径。是否有可能使这些工具中的任何一个都运行良好,而无需在整个构建工作区中搜索 jars 和依赖项?

0 投票
3 回答
9992 浏览

maven-2 - 使用 maven 运行 junits 和 cobertura

在我们的项目中,我们使用 maven 运行 junits 和 cobertura。我面临的问题是,

  1. junit 测试用例运行两次,一次在 jar 创建过程之前,然后再一次用于生成 cobertura 覆盖率报告。当与 ant 一起运行 cobertura 和 junits 时,我们只运行一次 junit,因为 cobertura 与 junits 一起运行。有没有办法用 maven 配置上述情况。我知道我们可以使用“maven.test.skip”属性来跳过junits。但是当我这样做时,我看不到 junit xml & html 文件报告。
  2. 另外,在 Maven 中,如何配置 junit 以批量或并行运行?

谢谢你!

0 投票
5 回答
4716 浏览

java - 我可以在启用所有日志记录和禁用所有日志记录的情况下自动执行 JUnit 测试用例吗?

我找到了解决方案,请参阅下面的我自己的答案。有人有更优雅的吗?

我想这样做以增加代码覆盖率并发现细微的错误。

假设要测试以下类:

和以下测试类:

像 Cobertura 这样的代码覆盖工具将正确报告只有一些条件分支已被检查。

info 和 debug 为记录器激活或停用。

除了在您的覆盖范围内看起来很糟糕之外,这还带来了真正的风险。

如果 if(logger.isDebugEnabled()) 里面的代码有一些副作用怎么办?如果您的代码仅在启用 DEBUG 时才有效,并且在日志级别设置为 INFO 时惨遭失败怎么办?(这实际上发生在我们的一个项目中:p)

所以我的结论是,包含记录器语句的代码应始终在启用所有日志记录的情况下测试一次,并在禁用所有日志记录的情况下测试一次......

有没有办法用 JUnit 做类似的事情?我知道如何全局启用或禁用我在 Logback 中的所有日志记录,所以问题是:如何执行两次测试,一次启用日志记录,一次禁用日志记录。

ps 我知道这个问题,但我不认为这是重复的。我不太关心绝对覆盖率值,而是关心可能包含在 if(logger.isDebugEnabled()) 中的微妙、难以发现的错误。

0 投票
5 回答
76842 浏览

java - 使用 Cobertura 从代码覆盖范围中排除方法

有没有办法将代码排除在 Cobertura 覆盖率报告中?我们有一些方法不应包含在覆盖率报告中,因此不会降低覆盖率。

我知道 Clover 有这样的功能,但我没有发现 Cobertura 有任何类似的功能。

0 投票
1 回答
1458 浏览

maven-2 - maven cobertura 生成类

我正在使用 maven cobertura 插件生成覆盖率报告,但由于某种原因,仪器目标陷入了无限循环。

在我的类目录(名为 bin)中,会发生无限循环并创建目录named generated-classes/cobertura/generated-classes/cobertura......只要我让仪器目标运行,就会不断地循环。在每个 cobertura 目录中都是我的检测类。知道为什么会发生这种情况吗?

0 投票
2 回答
1574 浏览

maven-2 - 哈德逊 cobertura 报告 0

我有一个问题,当我运行 cobertura 目标 maven 时,报告总是显示 0%。我试过分叉我的 junit 测试,但没有运气。我尝试在 pom 的报告部分和构建部分配置 cobertura 插件,并尝试将其绑定到站点和包阶段。有什么想法吗?

在相关的说明中,我还注意到在 hudson 内的 Cobertura 中运行测试会导致 junit 插件报告每个测试运行两次(这使报告为运行的测试数量增加了一倍)。有什么办法吗?

谢谢,

杰夫