如何从 junit 扩展中将 return 值赋给 @Test?
How to return value to @Test from junit extension?
我在每个@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();
JUnit Jupiter 还支持通过使用 @RegisterExtension
:
注释测试 类 中的字段以编程方式注册扩展
class WebServerDemo {
@RegisterExtension
static WebServerExtension server = WebServerExtension.builder()
.enableSecurity(false)
.build();
@Test
void getProductList() {
WebClient webClient = new WebClient();
String serverUrl = server.getServerUrl();
// Use WebClient to connect to web server using serverUrl and verify response
assertEquals(200, webClient.get(serverUrl + "/products").getResponseStatus());
}
}
有关详细信息,请参阅 https://junit.org/junit5/docs/current/user-guide/#extensions-registration-programmatic
上的用户指南
或者让您的扩展也实现 ParameterResolver
并将 TmsLink
作为参数注入您的测试方法参数。在 https://junit.org/junit5/docs/current/user-guide/#extensions-parameter-resolution
查找详细信息和链接示例
我在每个@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();
JUnit Jupiter 还支持通过使用 @RegisterExtension
:
class WebServerDemo {
@RegisterExtension
static WebServerExtension server = WebServerExtension.builder()
.enableSecurity(false)
.build();
@Test
void getProductList() {
WebClient webClient = new WebClient();
String serverUrl = server.getServerUrl();
// Use WebClient to connect to web server using serverUrl and verify response
assertEquals(200, webClient.get(serverUrl + "/products").getResponseStatus());
}
}
有关详细信息,请参阅 https://junit.org/junit5/docs/current/user-guide/#extensions-registration-programmatic
上的用户指南或者让您的扩展也实现 ParameterResolver
并将 TmsLink
作为参数注入您的测试方法参数。在 https://junit.org/junit5/docs/current/user-guide/#extensions-parameter-resolution