与maven一起运行junits和cobertura

Aja*_*jay 23 ant junit maven-2 cobertura

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

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

谢谢!

Dav*_*eri 23

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

  • 这是一个很好的观点.我遇到的另一件事是,由于字节码重写,如果你的代码经常使用反射,它可能会导致问题.例如,如果您有一个从类中提取字段的实用程序,并且您的单元测试断言示例类有三个字段,那么当您使用代码覆盖率运行它时,此测试实际上将失败. (4认同)
  • 我没有看到两次运行测试的任何好处.这清楚地表明测试结果不好,工具不好或配置错误. (3认同)