与maven一起运行junits和cobertura

时间:2009-04-09 06:04:30

标签: maven-2 ant junit cobertura

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

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

3 个答案:

答案 0 :(得分:23)

虽然我找不到确切的页面,但我最近读了一个关于为什么两次运行测试被认为是个好主意的讨论。引用的关键问题是Cobertura字节码更改对测试准确性的影响。在某些情况下,代码执行的时间可能很重要,字节代码更改可能导致JUnit中的测试在仅在Cobertura中运行时通过,反之亦然。因此,建议允许测试执行两次。引用的大多数示例都是围绕多线程行为,但我想可能还有其他情况,字节代码更改可能会导致测试中出现问题。如果Cobertura实际上改变了测试成功,那么让测试以两种方式执行可以为您提供基线结果,并且还可以减少让您进行疯狂追逐的机会。

答案 1 :(得分:1)

尝试添加cobertura作为编译范围参考。并张贴你的pom的相关部分。

答案 2 :(得分:1)

这是因为报告执行需要执行测试,因此可以创建报告。如果站点插件上有一个“仅限站点”的目标,但没有@requiresDependencyResolution test注释,则可以将其绑定到项目的prepare-package阶段,并且在没有运行测试的情况下生成报告两次。

不幸的是,目前似乎没有这样的目标(请参阅我的question主题)。 有关解决方法的详细信息,请参阅我对问题的回答。