maven - 集成测试为打包的 jar 创建文件

标签 maven asciidoctor spring-restdocs

我在集成测试中放心地生成 spring-restdocs 片段。 使用 maven 和默认为 integration-testverify 阶段的故障安全插件。问题是,asciidoctor-maven-plugin(从片段中生成最终的 HTML 文件)和 maven-resources-plugin(将最终的 HTML 文件复制到正确的位置)在 prepare-package 中的集成测试之前运行。

使用 asciidoctor 自然会失败,因为代码片段尚未生成。

如果我将 asciidoctor 配置为在 post-integration-test 运行,它会成功,但完成的 HTML 页面不在我的 jar 中,因为该 jar 已在 包中创建 阶段。

所以我觉得唯一的选择是在 tests 阶段运行我的集成测试(可能使用surefire而不是failsafe)。

我还可以将与文档相关的测试从其余集成测试中分离出来,但我实际上喜欢将它们放在看似正确的位置。

我想知道是否有我忽略的最佳实践? 集成测试是否应该永远不会产生可放入 jar 中的东西?

在我看来,maven 中的集成测试是为了跨 jar 测试(因此在打包后运行它们)。不像我正在使用它们,只是为了更大测试,涉及多个部分(特别是数据库)都在一个 jar 里。

我想要什么:

  1. 运行所有测试
  2. 编译文档
  3. 将所有内容打包到 jar 中

摘 self 的pom.xml

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
                <configuration>
                    <skip>${skipSurefire}</skip>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.22.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includes>
                        <include>**/*IT.java</include>
                        <include>**/*E2ET.java</include>
                    </includes>
                </configuration>
            </plugin>

            <!-- Compile API documentation -->
            <plugin>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <version>1.5.8</version>
                <executions>
                    <execution>
                        <id>generate-docs</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>process-asciidoc</goal>
                        </goals>
                        <configuration>
                            <backend>html</backend>
                            <doctype>book</doctype>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework.restdocs</groupId>
                        <artifactId>spring-restdocs-asciidoctor</artifactId>
                        <version>${spring-restdocs.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

            <!-- Package API documentation -->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.outputDirectory}/public/docs
                            </outputDirectory>
                            <resources>
                                <resource>
                                    <directory>
                                        ${project.build.directory}/generated-docs
                                    </directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

最佳答案

阶段integration-testverify只是integration-test默认绑定(bind)。和 verify目标。您还可以将集成测试绑定(bind)到 test 阶段:

                  ...
                  <artifactId>maven-failsafe-plugin</artifactId>
                  ...
                  <executions>
                    <execution>
                        <id>integration-tests</id>
                        <phase>test</phase>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                    </execution>
                  </executions>

这样就可以达到您喜欢/需要的顺序。

关于maven - 集成测试为打包的 jar 创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65469425/

相关文章:

python - 如何在 Python 中使用 AsciiDoc?

asciidoc - 如何定义自己的asciidoc宏

ms-word - 将 AsciiDoc 映射到 docx 模板

java - 如何将包含 "include"部分的 Asciidoc 文档编译为单个 adoc 文件

Java java.lang.ClassNotFoundException : jade. core.migration.InterPlatformMobilityService

maven - maven 配置文件 ID 如何使用 var?

kotlin - 在 Spring Rest Docs 中添加基本 url 的路径?

java - 如何模拟公共(public)API(第三方API)以生成spring Restdocs

java - 可以在 mvnrepository.com 上找到 Maven 依赖项,但在 repo.maven.apache.org/maven2/上找不到

java - iText 版本 4.2.1 在 Maven 中央存储库中重定向