首页 > 解决方案 > 在第一次测试失败时中断测试类

问题描述

我有一个 JUnit 5 测试,其中包含按顺序执行的多个步骤。这些步骤在不同的方法中定义。

我希望测试在夹具/类中的第一次失败时停止执行。

这是可以通过使用@Stepwise注释在 Spock 中实现的行为。我看不出在 JUnit 5 中如何做到这一点。

编辑:添加了示例测试

@TestMethodOrder(Alphanumeric.class)
class MainTest {

    @Test void test1() {
        assertTrue(true);
        System.out.printf("%d test 1 - ok%n", System.currentTimeMillis());
    }

    @Test void test2() {
        assertTrue(false);
        System.out.printf("%d test 2 -nok%n", System.currentTimeMillis());
    }

    @Test void test3() {
        assertTrue(true);
        System.out.printf("%d test 3 - ok%n", System.currentTimeMillis());
    }

    @Test void test4() {
        assertTrue(true);
        System.out.printf("%d test 4 - ok%n", System.currentTimeMillis());
    }
}

给出以下结果:

1596054675044 test 1 - ok
1596054675075 test 2

org.opentest4j.AssertionFailedError: 
Expected :true
Actual   :false

1596054675111 test 3 - ok
1596054675115 test 4 - ok

标签: javajunitjunit5

解决方案


似乎还不可能通过添加 JUnit5 注释来实现这一点。

但是,所有基础设施都可以实现您自己的扩展,类似于问题评论中的一个

这完全符合预期。


推荐阅读