gpt4 book ai didi

maven - JUnit - 仅当特定配置文件处于事件状态时才在类别中运行测试

转载 作者:行者123 更新时间:2023-12-02 01:13:16 28 4
gpt4 key购买 nike

我有以下测试:

FirstUnitTest.java
SecondUnitTest.java
FirstIntegrationTest.java
SecondIntegrationTest.java

单元测试没有用类别标记。

两个集成测试都标有 @Category(IntegrationTests.class) .

默认情况下,我希望运行除集成测试之外的所有测试。
但是,如果个人资料 integration-tests-only处于事件状态,我只想运行集成测试。

我天真地认为以下配置可以使这项工作:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups>com.example.IntegrationTests</excludedGroups>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>integration-tests-only</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<groups>com.example.IntegrationTests</groups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>

但是在没有配置文件的情况下运行测试时完全符合我的要求 - 如果我激活 integration-tests-only 只运行单元测试profile 根本没有运行测试。

任何想法我做错了什么?

最佳答案

我假设发生这种情况是因为您包含和排除,并且 Maven 合并配置并解析为不运行任何内容。

考虑重新编写配置(没有运行它,所以可能有一些小问题):

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>default-test</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>
<execution>
<id>unit-tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>${skipUnitTests}</skip>
<excludedGroups>com.example.IntegrationTests</excludedGroups>
</configuration>
</execution>
<execution>
<id>integ-tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>${skipIntegTests}</skip>
<groups>com.example.IntegrationTests</groups>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>no-tests</id>
<properties>
<skipTests>true</skipTests>
</properties>
</profile>
<profile>
<id>unit-tests</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<skipUnitTests>false</skipUnitTests>
<skipIntegTests>true</skipIntegTests>
</properties>
</profile>
<profile>
<id>integ-tests</id>
<properties>
<skipUnitTests>true</skipUnitTests>
<skipIntegTests>false</skipIntegTests>
</properties>
</profile>
</profiles>

关于maven - JUnit - 仅当特定配置文件处于事件状态时才在类别中运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943357/

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