Junit5怎么实现监听功能?当Junit5执行失败的时候,重写失败的方法

在 JUnit 5 中,可以通过实现 TestWatcher 接口来监听测试的执行,并在测试失败时重写失败的方法。下面是一个简单的示例:

import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.TestWatcher;

import java.util.Optional;

public class TestListener implements TestWatcher {

    @Override
    public void testFailed(ExtensionContext context, Throwable cause) {
        // 测试失败时执行的逻辑
        System.out.println("Test Failed: " + context.getDisplayName());

        // 如果需要获取失败的方法名称等信息,可以通过 ExtensionContext 对象获取
        Optional.ofNullable(context.getTestMethod())
                .ifPresent(method -> System.out.println("Failed Method: " + method.getName()));
    }
}

然后,在测试类上使用 @ExtendWith 注解来注册这个监听器:

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;

@ExtendWith(TestListener.class)
public class MyTest {

    @Test
    public void test1() {
        // 测试方法1
    }

    @Test
    public void test2() {
        // 测试方法2
    }
}

当测试方法执行失败时,testFailed 方法会被调用,并执行自定义的逻辑。您可以在实现的 TestWatcher 类中根据需要重写其他方法,如 testSuccessful(测试成功时调用)、testDisabled(测试被禁用时调用)等。

希望这个示例可以帮助您实现测试的监听功能。如果您需要更多帮助,请随时提问!