Как повторить тесты драматурга с помощью Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как повторить тесты драматурга с помощью Java?

Сообщение Anonymous »

Мы используем playwrigth для некоторых ненадежных тестов пользовательского интерфейса. Поэтому я хочу повторить каждый тест пару раз, прежде чем пометить его как неудавшийся. Поэтому я создал собственное расширение JUnit 5. Но, к сожалению, с драматургом он не работает из-за параметра тестовых функций.

Код: Выделить всё

@Retention(RetentionPolicy.RUNTIME)
public @interface Retry {
int value() default 5;
}

public class RetryExtension implements TestExecutionExceptionHandler {

private final AtomicInteger counter = new AtomicInteger(1);

private void printError(Throwable e) {
System.err.println(
"Attempt test execution #" + counter.get() +
" failed (" + e.getClass().getName() +
"thrown):  " + e.getMessage());
}

@Override
public void handleTestExecutionException(
ExtensionContext extensionContext, Throwable throwable)
throws Throwable {

printError(throwable);

extensionContext.getTestMethod().ifPresent(method -> {
int maxExecutions =
method.getAnnotation(Retry.class) != null ?
method.getAnnotation(Retry.class).value() : 1;

while (counter.incrementAndGet() = maxExecutions) {
throw t;
}
}
}
});
}
}

@UsePlaywright(DefaultOptions.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class E2ETest {

@ExtendWith(RetryExtension.class)
@Retry
@Test
void test(Page page) {
fail();
}
}
А вот моя трассировка стека при выполнении теста:

Код: Выделить всё

Attempt test execution #1 failed (org.opentest4j.AssertionFailedErrorthrown):
Attempt test execution #2 failed (org.junit.jupiter.api.extension.ParameterResolutionExceptionthrown):  No ParameterResolver registered for parameter [com.microsoft.playwright.Page page] in method [void E2ETest.test(com.microsoft.playwright.Page)].
Attempt test execution #3 failed (org.junit.jupiter.api.extension.ParameterResolutionExceptionthrown):  No ParameterResolver registered for parameter [com.microsoft.playwright.Page page] in method [void E2ETest.test(com.microsoft.playwright.Page)].
Attempt test execution #4 failed (org.junit.jupiter.api.extension.ParameterResolutionExceptionthrown):  No ParameterResolver registered for parameter [com.microsoft.playwright.Page page] in method [void E2ETest.test(com.microsoft.playwright.Page)].
Attempt test execution #5 failed (org.junit.jupiter.api.extension.ParameterResolutionExceptionthrown):  No ParameterResolver registered for parameter [com.microsoft.playwright.Page page] in method [void E2ETest.test(com.microsoft.playwright.Page)].

org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [com.microsoft.playwright.Page page] in method [void E2ETest.test(com.microsoft.playwright.Page)].

at RetryExtension.lambda$handleTestExecutionException$0(RetryExtension.java:33)
at java.base/java.util.Optional.ifPresent(Optional.java:178)
at RetryExtension.handleTestExecutionException(RetryExtension.java:26)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

Disconnected from the target VM, address: '127.0.0.1:55390', transport: 'socket'

Process finished with exit code -1
Итак, только с первой попытки я действительно попал в тестовый метод с допустимым объектом Page в качестве параметра. Если я использую расширение повтора для тестов без параметров, оно работает нормально. Но мне нужна страница, данная драматургом, и я не знаю, как мне соединить эти два мира.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -with-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»