如何从 jar 文件运行 Maven Failsafe 集成测试?

我有一个 Spring Boot 多模块 Maven 项目,我可以使用以下命令运行集成测试:

mvn clean verify

而且效果很好。我现在想从容器运行相同的集成测试,并且不想将所有源代码嵌入到容器中。

我的问题是:如何在不使用源代码的情况下运行Maven Failsafe 插件?

我尝试从命令行运行failsafe:integration-test目标并设置dependencyToScan参数:

mvn failsafe:integration-test -DdependenciesToScan=com.myorg:proj-tests.jar

但没有找到测试。

我不需要在没有 Maven 的情况下运行测试。我更喜欢使用 Maven 从命令行运行测试,而不是添加代码或修改项目结构。

PS2:我使用的是 maven-failsafe-plugin 2.22.2,这是 Spring Boot 2.1.8 提供的版本。


慕森王
浏览 115回答 1
1回答

繁花不似锦

来自文档:从版本 2.22.0 开始,您可以从多模块项目的项目依赖项中扫描测试类。这意味着测试 ( proj-tests.jar) 必须是项目的依赖项。由于您无法在构建测试 jar 的同一项目中依赖它们,因此解决方案是使用另一个模块或pom文件。例子:<groupId>failsafe.use.jar</groupId>  <artifactId>failsafe-use-jar</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <dependencies>    ...    <dependency>      <groupId>com.myorg</groupId>      <artifactId>proj-tests</artifactId>      <version>0.0.1-SNAPSHOT</version>      <classifier>tests</classifier>    </dependency>    ...  </dependencies>   <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-failsafe-plugin</artifactId>        <version>2.22.2</version>      </plugin>    </plugins>  </build> 这proj-tests是一个项目依赖项,可以使用以下命令创建: <groupId>com.myorg</groupId>  <artifactId>proj-tests</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging> ...  <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-jar-plugin</artifactId>        <version>3.1.2</version>        <executions>          <execution>            <goals>              <goal>test-jar</goal>            </goals>          </execution>        </executions>      </plugin>    </plugins>  </build>要从容器运行集成测试,显然需要将所有依赖项安装在本地(容器)maven 存储库中或部署在远程中。然后你可以运行:mvn failsafe:integration-test -DdependenciesToScan=com.myorg:proj-tests请注意,属性的格式dependenciesToScan是groupId:artifactId(您使用 jar 的名称而不是 运行artifactid)另请注意,集成测试failsafe默认搜索以IT(集成测试) 结尾的类文件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java