java如何从junit扩展向@Test返回值?
我在每个@Test上都有allure2@Tmslink(“1234”)注释的测试。所以,我需要得到@TmsLink值,并在测试中使用它。我在扩展中有注释值,但如何将其提供给测试
public class TmsLink implements BeforeTestExecutionCallback {
private String tmsLink;
@Override
public void beforeTestExecution(ExtensionContext context) {
findAnnotation(context.getElement(), TmsLink.class).ifPresent(link -> this.tmsLink = link.value());
}
public String getTmsLink() {
return tmsLink;
}
}
@ExtendWith(TmsLink .class)
public abstract class Tests {
}
对于Junit4,它只是:
@Rule
public TmsLink extension = new TmsLink();
extension.getTmsLink();
# 1 楼答案
JUnit Jupiter还支持通过在测试类中用
@RegisterExtension
注释字段,以编程方式注册扩展:有关详细信息,请参阅https://junit.org/junit5/docs/current/user-guide/#extensions-registration-programmatic上的用户指南
或者让您的扩展也实现
ParameterResolver
,并将TmsLink
作为参数注入测试方法参数。查找详细信息和链接到https://junit.org/junit5/docs/current/user-guide/#extensions-parameter-resolution的示例