Как вернуть значение @Test из расширения junit? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть тесты с аннотацией allure2 @Tmslink ("1234") для каждого @Test.Итак, мне нужно получить значение @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 Ответ

0 голосов
/ 14 сентября 2018

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

...