【问题标题】:JUnit 5 test execution ordered by tagJUnit 5 测试执行按标签排序
【发布时间】:2018-08-02 11:48:17
【问题描述】:

是否可以根据@Tag更改测试执行的顺序?我想让所有标有@Tag("fast") 的测试在@Tag("slow") 之前执行。

我对 IntelliJ IDEA 和 Maven 的解决方案感兴趣。两者都不关心标签的配置顺序。

我的 Maven 配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.0</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.2.0</version>
        </dependency>
    </dependencies>
    <configuration>
        <properties>
            <includeTags>fast,slow</includeTags>
        </properties>
    </configuration>
</plugin>

我想我最好的选择是单独运行这些套件。

【问题讨论】:

    标签: junit junit5


    【解决方案1】:

    JUnit Jupiter 只对测试类进行一次传递,并执行所有标记为活动的测试,因此它不排序。对于按标签排序测试的工具,它必须运行 JUnit 多次,每个标签运行一次,但没有任何工具可以开箱即用。

    在 IntelliJ you can run all tests with a specific tag(搜索“@Tag”)中,您可以生成多个这样的配置。在 Maven 中,您可以为 Surefire 和 Failsafe 提供不同的标签来执行,尽管这只会给您带来两次执行而不是一次。

    【讨论】:

    • 在 Maven 中,您应该能够为 Surefire 或 Failsafe 为每个标签配置一个 profile,这样您就可以根据需要对它们进行分组。
    • 这样配置的组合并了吗?没试过……以后再做。
    • 嗯,它们实际上是 JUnit 平台的单独运行,但生成的测试报告可以聚合。所以在后者的意义上,是的,整体测试结果将被合并——例如,由 CI 服务器。
    • 澄清一下:每个标签的配置文件当然是可能的,但是激活多个配置文件不会导致所有标签都被激活(一个配置文件胜过其他配置文件 [不,它不会在 Twitter 上侮辱他们]) 也不对他们以任何特定的顺序运行。当然可以使用不同的配置文件多次调用 Maven。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    相关资源
    最近更新 更多