问题标签 [clover]

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 投票
1 回答
1432 浏览

java - 在 Play 中使用 Clover 执行代码覆盖!使用 Ant 的框架应用程序

我正在编写一个 Ant 脚本来对我的 Play进行一些额外的检查!框架应用。

目前,我通过简单地调用“播放自动测试”来从我的 Ant 脚本执行我的测试。

有人知道如何将 Clover 集成到 Play 测试套件中吗?显然,我不必使用上述方法运行我的测试。

我还尝试使用执行 JUnit 测试的传统方式(即使用 Ant 的junit目标)编写 Ant 脚本,但遇到了两个问题:

  • 在执行我所有的测试时,只有第一个会成功执行,而其他的会因为奇怪的原因而失败
  • 如果我只在我的套件中公开一个测试并成功运行测试,则表示我的代码覆盖率为 0%。然后我认为我错误地设置了 clover,但是,我创建了一个简单的类来测试一个什么都不做的生产类,并且覆盖率像我预期的那样上升。

因此,如果我要走这junit条路,我需要知道如何执行我的所有测试,以便它们可以一个接一个地成功运行(它在使用 Play 运行方式时有效play auto-test),我需要知道为什么 Clover 会这样做似乎没有捡起 Play 测试所触及的代码行。

(我知道 Play 有一个 Cobertura 模块,但是,我发现 Clover 在告诉我准确的覆盖率数据方面做得更好)

更新:不幸的是,我无法复制我之前遇到的确切错误,因为我在尝试手动编译时遇到了编译问题。我已经开始使用 Secure 模块,它只包含 Java 源文件。因此,在我的 Ant 脚本中,我调用play precompile它为 Secure 模块(以及系统中的所有其他内容,包括我的代码)生成字节码。所以现在当我尝试使用 Clover 编译我的应用程序代码时,我认为编译器有点纠结,因为我有两个版本的类 - 一个由预编译命令(非三叶草)生成,一个由我自己生成ant 编译(带三叶草):

所以我现在基本上有两个问题:

  • 我需要能够编译我的源代码,该源代码也依赖于 Play 提供的模块(例如 CRUD、Secure),这些模块没有编译版本,因此我尝试通过play precompile在我的 Ant 脚本中调用自己来绕过它
  • 一旦我开始编译,我无疑会再次遇到无法使用junit目标执行测试的原始问题。

更新#2:事实证明,我得到的错误是由于findById调用需要从 JPABase 到 House 的转换(而不是 IDE 或 play 似乎关心它)。因此,在我为所有 play 的“find*”方法添加演员表后,我实际上得到了 JUnit 和 Clover 报告! 但是...我现在遇到两种错误:

  • Play中创建的实体类可以通过扩展Model提供魔术方法的类来创建,例如find前面提到的那些方法以及count方法。Model 超类实际上扩展了 GenericModel,它通过抛出 UnsupportedOperationException 来实现这些方法。所以显然玩!在幕后做了一些更神奇的事情来提供这些方法的实际实现。不幸的是,我的测试(和生产代码)依赖于诸如 count 之类的方法,但它们在我的 ant/junit 场景中抛出了异常(注意:运行时一切正常play auto-test

  • 我得到的另一个错误是由于我使用了 Spring 模块。在我的一个类(根类)中,我调用Spring.getBeanOfType(Some.class). 现在我使用自动扫描,但是在 ant/junit 测试环境中,Spring 模块还没有设置我的 spring 容器,因此调用只是返回 null。

我有一种感觉,有一种神奇的修复方法可以解决我的两个问题,但是我不确定那个神奇的修复方法是什么。

0 投票
0 回答
387 浏览

java - 三叶草数据库的文件大小限制为 2GB 吗?

我们有 3 个 clover 数据库,一个用于客户端测试、集成测试和单元测试。

为了计算总覆盖率,我们将这些数据库合并到一个新的三叶草数据库中:如您所见,这按预期工作(并且现在已经超过 18 个月了)

自上周末以来,我在尝试从合并的 coveragedb 文件生成报告时遇到以下问题:

我检查了文件并注意到它的大小(根据 Windows 资源管理器):2,08 GB(2.244.583.202 字节),刚刚超过 2GB。我不知道前几个周末运行的大小,因为我们不保留覆盖 dbs,但由于程序中没有其他任何更改,我认为 2GB 是这里的问题。

0 投票
1 回答
467 浏览

surefire - /tmp 文件填满了surefires 文件

当 Jenkins 调用 maven build 时,/tmp 填充了 100s 的surefire839014140451157473tmp,如何在构建过程中显式重定向到另一个目录。对于 clover 构建,它填充了 100 个 grover53460334580.jar?有什么想法可以解决这个问题吗?

并且任何人都知道创建 ramdisk 的确切步骤,以便我可以将肯定的东西重定向到该 ramdisk 中?它会节省写入硬盘的时间吗?

谢谢

0 投票
1 回答
1337 浏览

java - Clover Java 堆空间错误

我在从 hudson 运行时遇到 java 堆空间错误,我将我的设置MAVEN_OPTS如下,任何人都可以让我知道这个问题的解决方案是什么。

0 投票
1 回答
2810 浏览

unit-testing - 由于 codeCoverageIgnore,PHPUnit HTML 和 Clover 覆盖率报告不同

我正在使用 PHPUnit 3.5.14 并且有一套测试覆盖了我的 PHP 应用程序的 100%,不包括带有 //@codeCoverageIgnore[Start|End] 的某些部分。HTML 覆盖率报告显示 100% 的覆盖率。但是当我生成一个 Clover XML 覆盖率报告时,我希望 Jenkins 阅读该报告以强制执行 100% 覆盖率要求,它显示我所有被忽略的代码都没有被覆盖。

例如,我有一个包含 20 个方法的控制器类,其中一个看起来像这样:

HTML 覆盖率报告显示了涵盖的 20 种方法,其中包括完全忽略的一种:

图:报道摘录

在此处输入图像描述 http://i.imgur.com/VRtKR.png

但是 Clover XML 报告显示了 19/20 种方法,没有提到 _getFoo:

...

(顶部的 _getFoo 行是第 596-608 行。)

我的 PHPUnit 配置的日志记录部分如下所示:

有没有办法配置 Clover 覆盖率日志条目,或更改我的覆盖率忽略注释,以便 Clover 报告指示 100% 覆盖率以匹配 HTML 报告?

0 投票
2 回答
1225 浏览

java - Clover - 在没有自动化测试的情况下获得覆盖

我目前正在探索在项目中使用的各种代码覆盖工具,并在 clover、Emma 和 cobertura 中入围。(我的组织已经准备好为三叶草买单了)

但是我们没有自动化测试。所有测试都是手动的,我们需要使用检测代码在运行时生成结果。

三叶草的维基的初始行说

代码覆盖率是自动化测试覆盖的代码百分比。

三叶草可以收集非自动化测试的覆盖率吗?即要求是我在编译时检测代码并在我实际运行代码时获取覆盖率报告。谷歌搜索了很多,但找不到最合适的答案。

如果三叶草不支持它,是否有替代方案可以实现

0 投票
1 回答
3331 浏览

java - How to exclude code from the Clover coverage report?

Is there any way to hide classes or methods from being included in the Clover code coverage report? We have some proof of concept code along side production quality code in the same directories. This concept code is being included in the code coverage reports which is skewing our numbers. We were wondering if we could annotate or mark them in such a way that Clover will ignore them when generating the report.

-- Update --

What about using a methodContext against a custom annotation?

0 投票
1 回答
1312 浏览

ant - ANT 三叶草和声纳

我有一个带有三叶草和声纳目标的 ANT 构建,示例命令是

目前我使用

target 设置我的源目录以进行三叶草检测。我的测试运行,我得到了预期的三叶草报告。我的声纳目标

也可以正常工作,但似乎正在处理 clover 检测代码而不是原始源代码,这会导致 findbugs 报告出现问题,因为 clover 检测代码会导致 findbugs 中的多次违规。我的声纳指标很差。目前作为一种解决方法,我们有两个 CI 构建,一个用于 clover,第二个用于声纳,但这意味着我永远无法将代码覆盖率指标和声纳详细信息合二为一。

我尝试使用 clover-instr 目标来确保将检测代码放置在不同的目录中,但由于编译后的代码仍生成到单个类目录中,因此会出现同样的问题。我想知道其他开发人员使用什么策略来解决这个问题。

在最低级别,是否存在由 clover.all 目标设置的属性(即 -Dclover.useCompile=true|false),以向 ant 编译目标指示应该使用 clover 编译器?我喜欢运行默认的 clover.all 目标,然后在声纳目标中删除已检测的源文件和类文件,在没有 clover 选项的情况下重新生成并运行默认的声纳目标。

编辑 1:如果在Clover、Ant 和 Findbugs上找到此项目,建议在 ANT 脚本中编译两次。由于 ant 构建只会在我看不到如何在构建中切换属性以确保编译任务运行两次时才加载属性,一次启用三叶草,第二次不启用。

0 投票
0 回答
567 浏览

hudson - 如何调整詹金斯的三叶草代码覆盖率指标?

这是我需要一些帮助的插件... http://wiki.hudson-ci.org/display/HUDSON/Clover+Plugin

我想知道如何以正确的方式调整覆盖率指标目标。

我的代码覆盖率是 35% 的方法,0% 的条件,60% 的语句。度量是这样调整的。

100% 生命值:10 / -1 / 10

0% 生命值:0 / -1 / 0

不稳定:0 / -1 / 0

现在我想知道为什么詹金斯仍然因为三叶草覆盖而显示云。如何设置这些插件来找回阳光?

提前致谢!

0 投票
1 回答
302 浏览

maven - 更改三叶草目标输出目录(maven 插件)

是否可以选择更改 maven clover 插件生成 html 报告的目录?