23

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

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

谢谢你!

4

3 回答 3

23

虽然我再也找不到确切的页面,但我最近阅读了一篇关于为什么两次运行测试被认为是一个好主意的讨论。引用的关键问题围绕着 Cobertura 字节码更改对测试准确性的影响。在某些情况下,代码执行的时间可能很重要,字节码更改可能会导致在 JUnit 中失败的测试在仅在 Cobertura 中运行时通过,反之亦然。因此,建议允许测试执行两次。引用的大多数示例都围绕多线程行为,但我想可能还有其他情况是字节码更改可能会导致您的测试出现问题。

于 2009-05-15T12:16:27.530 回答
1

尝试添加 cobertura 作为编译范围参考。并发布你的 pom.xml 的相关部分。

于 2009-04-13T18:56:59.610 回答
1

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

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

于 2009-07-30T22:06:20.427 回答