【问题标题】:How do I execute Junit test case after package phase in maven?如何在 Maven 中打包阶段后执行 Junit 测试用例?
【发布时间】:2016-05-04 06:21:59
【问题描述】:

我想在我的构建 jar 上运行我的 Junit,但是在测试阶段的包阶段之前在类文件上执行的 maven Surefire 插件,有没有办法在构建项目 jar 之后运行所有 junit。 在构建 jar 上运行的原因是为了验证 jar 的混淆。

【问题讨论】:

    标签: java maven maven-surefire-plugin


    【解决方案1】:

    解决方案是在集成测试阶段使用maven-failsafe-plugin。你需要这个到你的 pom 文件中:

    <project>
      [...]
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.19.1</version>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      [...]
    </project>
    

    您应该遵循conventions 并遵循集成测试的命名约定:

    <includes>
     <include>**/IT*.java</include>
     <include>**/*IT.java</include>
     <include>**/*ITCase.java</include>
    </includes>
    

    之后,您可以通过以下方式运行这些集成测试:

    mvn clean verify
    

    如果你喜欢运行only unit tests

    mvn clean test
    

    【讨论】:

    • khmarbaise 感谢您的回答,我有两个问题 1- 我怎么知道它在运行测试用例时将项目混淆了 jar,?和 2- 我怎样才能绕过 surefire 插件?
    • 获取正确的 jar 是那些集成测试的工作。跳过测试可以通过mvn -DskipTests=true...
    • 您的回答对我们很有帮助,请问我应该将这些*IT.java 文件放在哪里?我尝试像那些单元测试一样将它们放在src/test/ 下,然后运行mvn clean verify,但是它会弹出java.lang.NoClassDefFoundError:... 之类的错误。我错过了什么? @khmarbaise
    • 问题已解决,因为我使用的是spring-boot-maven-plugin,所以我应该在spring-boot-maven-plugin 部分中包含&lt;configuration&gt;&lt;classifier&gt;exec&lt;/classifier&gt;&lt;/configuration&gt;。再次感谢您!
    【解决方案2】:

    maven 的测试分为两个阶段,一是单元测试,二是集成测试。所以如果你愿意,你应该在集成测试阶段执行它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 2014-02-11
      • 2012-01-04
      • 2023-01-24
      相关资源
      最近更新 更多