如何解决集成测试为打包的 jar 创建文件
我正在我的集成测试中放心地生成 spring-restdocs 片段。
使用 maven 和默认为 integration-test
和 verify
阶段的故障安全插件。问题是,asciidoctor-maven-plugin
(从片段中生成最终的 HTML 文件)和 maven-resources-plugin
(将最终的 HTML 文件复制到正确的位置)在 prepare-package
中的集成测试之前运行.
使用 asciidoctor 自然会失败,因为代码段尚未生成。
如果我将 asciidoctor 配置为在 post-integration-test
运行,它会成功,但是完成的 HTML 页面不在我的 jar 中,因为 jar 已经在 package
阶段创建。
所以我觉得唯一的选择是在 tests
阶段运行我的集成测试(可能使用surefire而不是failsafe)。
我也可以将与文档相关的测试从其余的集成测试中分离出来,但实际上我喜欢将它们放在看似正确的位置。
我想知道是否有我忽略的最佳实践? 集成测试应该永远不会产生可以放入 jar 的东西吗?
在我看来,maven 中的集成测试用于跨 jar 测试(因此在打包后运行它们)。不像我使用它们,只是用于更大测试,这些测试涉及多个部分(尤其是 DB),所有部分都在一个 jar 中。
我想要什么:
- 运行所有测试
- 编译文档
- 把所有的东西都打包成jar
摘自我的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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。