如何在 Maven 中的包阶段后执行 Junit 测试用例?

How do I execute Junit test case after package phase in maven?

我想 运行 我的 Junit 在我的构建 jar 上,但是 Maven surefire 插件在测试阶段的包阶段之前在 class 文件上执行,有什么方法可以 运行 构建一个 jar 项目后的所有 junit。 运行 构建 jar 的原因是验证 jar 的混淆。

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

解决方案是在集成测试阶段使用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