相关疑难解决方法(0)

在Maven构建中并行运行junit测试?

我正在使用JUnit 4.4和Maven,并且我有大量长时间运行的集成测试.

在并行化测试套件时,有一些解决方案允许我在一个测试类中并行运行每个测试方法.但所有这些都要求我以某种方式改变测试.

我真的认为在X线程中并行运行X个不同的测试类是一个更清晰的解决方案.我有数百个测试,所以我并不真正关心线程化个别测试类.

有没有办法做到这一点?

java junit maven

110
推荐指数
4
解决办法
7万
查看次数

Hudson中的Java代码覆盖率

我正在将一些项目从一个ant构建迁移到一个maven.构建服务器是,并将保留,Hudson.

由于测试运行并记录了两次问题,我在使用cobertura在哈德森录制代码覆盖时遇到了麻烦.

该项目是多模块的,尽管不是必需的,但是具有代码覆盖率数据的聚合输出将是很好的.

总而言之,我正在寻找的解决方案必须:

  • 对所有模块运行自动化测试并记录一次结果;
  • 在Hudson中显示单个模块代码的覆盖范围;
  • 为整个项目轻松配置一次,而不是在每个模块中配置.

解决方案可以基于Cobertura,或Emma,或任何其他Java代码覆盖工具.


更新:使用Emma运行测试仍然会复制结果并且没有merge功能,因此它不适用于多模块构建.

java code-coverage hudson emma cobertura

14
推荐指数
2
解决办法
8308
查看次数

如何使maven cobertura和surefire插件一起工作?

我把surefire和cobertura插件放在我的pom.xml,但我无法配置他们工作正常.或者cobertura不运行或测试执行两次.

那么,我怎么能配置它们一起运行的插件呢?

如果我以这种方式配置,cobertura不会运行:

<plugin>
<groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

如果我以这种方式配置,测试将执行两次:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
        <execution>
            <phase>test</phase>
            <goals>
                <goal>cobertura</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

configuration cobertura maven maven-surefire-plugin

8
推荐指数
1
解决办法
4840
查看次数

Maven Cobertura和包没有运行单元测试两次

我正在运行这样的maven:

mvn clean cobertura:cobertura package
Run Code Online (Sandbox Code Playgroud)

我注意到我的单元测试运行了两次(从而使我的构建时间加倍).有没有办法在不运行测试两次的情况下运行cobertura并在同一命令中生成包?

java unit-testing maven maven-cobertura-plugin

6
推荐指数
1
解决办法
1925
查看次数

Maven的组合站点/部署目标

在CI服务器上运行Maven构建时,我会生成站点以发布文档和报告,并将工件部署到快照存储库以供其他项目使用.为此,我执行以下目标:

mvn clean site deploy
Run Code Online (Sandbox Code Playgroud)

这意味着单元测试运行两次,一次用于站点生命周期,一次用于部署生命周期.如果我将站点目标配置为绑定到标准生命周期,则测试仍然运行两次,运行站点目标始终会导致测试因为@requiresDependencyResolution测试注释而运行.如果您只是创建站点,这很好,但在部署的上下文中,它大大增加了构建时间,没有任何好处.

我有一个解决方法,涉及将SiteMojo(和所需的父项)复制到新插件并从副本中删除@requiresDependencyResolution测试注释.

这个修改过的mojo会生成报告,而不会强迫测试再次运行,但我更喜欢不涉及任何网站插件黑客攻击的解决方案.有没有办法抑制requiresDependencyResolution注释?

maven-2

5
推荐指数
1
解决办法
3268
查看次数