作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的 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/
我是一名优秀的程序员,十分优秀!