【问题标题】:JUnit - run tests in a category only if specific profile is activeJUnit - 仅当特定配置文件处于活动状态时才在类别中运行测试
【发布时间】:2017-05-12 17:26:51
【问题描述】:

我有以下测试:

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 配置文件,则根本不会运行任何测试。

任何想法我做错了什么?

【问题讨论】:

    标签: maven junit


    【解决方案1】:

    我假设发生这种情况是因为您包含和排除,并且 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>
    

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 2017-01-13
      • 2022-11-24
      • 2019-04-18
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      相关资源
      最近更新 更多