Java:使用哪种代码覆盖工具?

Java:使用哪种代码覆盖工具?,java,code-coverage,cobertura,emma,clover,Java,Code Coverage,Cobertura,Emma,Clover,以下是我想做的: 1) 已检测正在运行的应用程序。字节码是干净的-意味着应该在字节码级别添加跟踪信息 2) 正在运行的应用程序可能会运行数天或数周。我想每天有一个跟踪文件 3) 如果跟踪期结束,我想将所有跟踪文件合并在一起,并为开发人员生成一个HTML报告 以下是我到目前为止调查的内容: 说到问题1,Emma似乎做得很好。即时检测非常简单 Cobertura说,他们能够进行字节码插装,但我还没有找到一个例子 Cobertura和Emma都没有谈论定期跟踪文件转储 我对克洛弗没有把握。也许以前有

以下是我想做的:

1) 已检测正在运行的应用程序。字节码是干净的-意味着应该在字节码级别添加跟踪信息

2) 正在运行的应用程序可能会运行数天或数周。我想每天有一个跟踪文件

3) 如果跟踪期结束,我想将所有跟踪文件合并在一起,并为开发人员生成一个HTML报告

以下是我到目前为止调查的内容:

  • 说到问题1,Emma似乎做得很好。即时检测非常简单

  • Cobertura说,他们能够进行字节码插装,但我还没有找到一个例子

  • Cobertura和Emma都没有谈论定期跟踪文件转储

  • 我对克洛弗没有把握。也许以前有人看过

以前有人这样做过吗?能帮我解决这些问题吗

谢谢,
detlef

Cobertura将很好地插入代码。它将转储可以合并在一起的.ser文件

我唯一没有尝试过的部分就是每天拍一张快照。我的两个想法是尝试其中之一

a) 如果复制.ser文件并删除旧的.ser文件,会发生什么情况。它会崩溃,还是会创建一个新的.ser文件?如果它创建了一个新文件,这将起作用

b) 是否可以每天关闭应用程序1分钟,复制并删除.ser文件

在这两种情况下,一旦您拥有一组.ser文件,就可以很容易地将它们合并到一起并创建一个html报告。

也很好。

我们允许您在执行时通过调用特殊方法随时转储测试覆盖率快照


如果您有一个长时间运行的应用程序,并且想要一个每日快照,您可以添加一个额外的线程,等待24小时,转储快照,然后返回睡眠状态。每个快照都有自己的日期戳文件。您可以根据自己的喜好将其中任意多个合并在一起,并生成XML覆盖率报告(然后是您喜欢的格式的HTML报告)。

免责声明:我是Atlassian的Clover开发人员。

关于您的需求和Clover功能:

正在运行的应用程序可能会运行数天或数周

如果您只想收集全球覆盖率数据,那么就可以了

如果您还想收集每个测试的覆盖率,那么我想运行几个星期的测试将产生大量数据,这可能会严重影响性能。但我相信你不是在这里谈论这种情况

我想每天有一个跟踪文件

Clover允许按指定的时间间隔设置数据转储(例如a)。有关详细信息,请参阅

值得一提的是,Clover在将覆盖率数据刷新到磁盘后不会重置计数器。因此,实际上不需要每天编写一个跟踪文件(当然,如果您愿意,您可以这样做),当Clover在最后写入所有数据时就足够了

我想合并所有跟踪文件,并为开发人员生成一个HTML报告

没问题,一定要把这个放在三叶草里。这实际上是在报告生成期间查找与给定数据库相关的所有覆盖率记录文件的默认行为


如果需要,还可以生成多个报告,并在它们之间建立链接

您可以每天刷新数据,为什么需要拍摄快照?