gpt4 book ai didi

java - 如何从 Junit 5 jupiter 扩展中的测试中获取字段

转载 作者:行者123 更新时间:2023-12-02 09:14:59 26 4
gpt4 key购买 nike

我有一个自定义标签用于我创建的驱动程序的测试。我正在寻找一种使用新的 Junit5 jupiter 扩展在 BeforeEach 和 AfterEach 期间初始化和退出此驱动程序的方法。

@Target({TYPE, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
@ExtendWith(MyExtension.class)
public @interface MyDriver
{
}

我看到有一个 AnnotationSupport.class 应该可以帮助您获取用某些注释注释的字段,但还没有找到任何示例。

我想要的只是能够使用扩展程序中用我的注释注释的字段。

最佳答案

你可以这样处理:

public class MyExtension implements BeforeEachCallback {
@Override
public void beforeEach(ExtensionContext context) {
context.getTestInstance().ifPresent(testInstance -> {
List<Field> driverFields = AnnotationSupport.findAnnotatedFields(testInstance.getClass(), MyDriver.class);
for (Field driverField : driverFields) {
try {
Object fieldValue = driverField.get(testInstance);
// Do whatever you want with the field or its value
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
});
}
}

然后在测试类中的每个测试之前调用它,如下所示:

@MyDriver
class SomeTestThatUsesDriver {

@MyDriver
Object fieldWithAnnotation = "whatever";

@Test
void aTest() {
...
}
}

不过,我不会做的是使用注释@MyDriver来添加扩展和标记字段。我宁愿使用像 @MyDriverField 这样的附加注释,或者直接在测试类中添加扩展。

关于java - 如何从 Junit 5 jupiter 扩展中的测试中获取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59068813/

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