gpt4 book ai didi

java - 如何仅在标记测试后运行清理方法?

转载 作者:行者123 更新时间:2023-12-03 22:21:55 26 4
gpt4 key购买 nike

我正在为我的 Java 项目编写 JUnit 5 测试。

我有一些需要耗时清理的测试方法(在每个方法之后)。理想情况下,我想用一些注释标记它们并仅为它们运行清理方法。

这是我尝试过的:

class MyTest {

@AfterEach
@Tag("needs-cleanup")
void cleanup() {
//do some complex stuff
}

@Test
void test1() {
//do test1
}

@Test
@Tag("needs-cleanup")
void test2() {
//do test2
}
}

我希望 cleanup 方法仅在 test2 之后运行。但它实际上是在两次测试之后运行的。

是否可以通过 JUnit 5 注释的某种组合来实现它?我不想将我的测试类分成几个类或直接从测试方法调用 cleanup

最佳答案

您可以注入(inject)TestInfo进入测试并检查测试注释的标签:

class MyTest {
private TestInfo testInfo;

MyTest(TestInfo testInfo) {
this.testInfo = testInfo;
}

@AfterEach
void cleanup() {
if (this.testInfo.getTags().contains("needs-cleanup")) {
// .. do cleanup
}
}

@Test
void test1() {
//do test1
}

@Test
@Tag("needs-cleanup")
void test2() {
//do test2
}

}

关于java - 如何仅在标记测试后运行清理方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52194480/

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