gpt4 book ai didi

maven-3 - "default-test"在 maven-surefire 插件中代表什么

转载 作者:行者123 更新时间:2023-12-04 05:19:36 26 4
gpt4 key购买 nike

我在我的 pom 中定义了以下配置,以确保使用 TestNg:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<configuration>
<skipTests>${skip-all-tests}</skipTests>
</configuration>
<executions>
<execution>
<id>unit-tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>${skip-unit-tests}</skip>
<groups>unit</groups>

<excludedGroups>integration</excludedGroups>
</configuration>
</execution>
<execution>
<id>integration-tests</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>${skip-integration-tests}</skip>
<groups>integration</groups>
<excludedGroups>unit</excludedGroups>
</configuration>
</execution>
</executions>
</plugin>

但似乎这两次执行之前总是有一个“默认测试”运行,它似乎运行每个 @test 注释方法(至少我是这么认为的)。
--- maven-surefire-plugin:2.12:test (default-test) @ my-project

例如在项目上运行“mvn test”,会执行两次测试。 “默认测试”和“单元测试”。

有人可以向我解释一下吗?
可以禁用或控制它(配置测试的内容和不测试的内容)吗?

最佳答案

人们希望有一种方法来覆盖 Maven 中插件的默认内置执行。

Maven 3(或者它可能早在 2.1.0 或 2.2.0 中就已经引入)通过为包装生命周期添加到有效 pom 的每个插件执行定义一个默认执行 ID 来解决这个问题。

此隐式 ID 的名称始终为 default-_____我不记得生成它的确切规则。

因此,您可以通过定义匹配的执行来覆盖打包的注入(inject)执行。

为了解决您的问题,我会更改 <id>unit-tests</id><id>default-test</id>或者
添加

            <execution>
<id>default-test</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>

两者都有相同的效果,尽管 <id>unit-tests</id><id>default-test</id>解决方案的性能会稍高一些,因为您只需要调用两次surefire 执行。

我要指出的另一件事是,使用 maven-failsafe-plugin 执行集成测试可能会更好,因为在某个时间点,您可能想要在集成测试前后做一些事情,而故障安全就是为此而设计的用例(尽管进一步向下切换应该是微不足道的)

关于maven-3 - "default-test"在 maven-surefire 插件中代表什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11935181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com