#testng
#testng
Вопрос:
Я пытаюсь реализовать зависимость TestNG в моем XML (где один блок из ~ 50 тестов зависит от другого блока из ~ 30 проходящих тестов), но столкнулся с проблемой с пропуском аннотаций, которые я ранее реализовал. Похоже, что зависимость срабатывает также при пропуске теста, а не только при его сбое. Есть ли обходной путь для этого? Я хочу проигнорировать пропущенный результат теста и продолжить выполнение зависимых тестов и вызывать зависимость только в том случае, если тест явно провалился.
Из документации TestNG:
Жесткие зависимости. Все методы, от которых вы зависите, должны быть запущены и выполнены успешно для вашего запуска. Если в ваших зависимостях произошел хотя бы один сбой, вы не будете вызваны и отмечены как ПРОПУЩЕННЫЕ в отчете.
Ответ №1:
Исправлено, вроде как. Добавление приведенного ниже кода в метод afterInvocation изменит результат теста с ПРОПУСКА на ПРОХОЖДЕНИЕ. Это позволяет запускать зависимые тесты, но скрывает все пропущенные тесты из результатов ваших тестов. В нашем случае это было предпочтительнее. Если есть лучшее решение, которое не покрывает пропущенные тесты, я был бы рад это услышать!
if (method.getTestMethod().getRetryAnalyzer() != null amp;amp; Retry.getRetryCount() == 0) { // check if the method was skipped without retries (due to skip annotation)
ITestContext tc = Reporter.getCurrentTestResult().getTestContext();
tc.getSkippedTests().addResult(method.getTestResult(), Reporter.getCurrentTestResult().getMethod());
tc.getSkippedTests().getAllMethods().remove(Reporter.getCurrentTestResult().getMethod());
SMAPLogger.Info("Test result: Test Skipped -- marking test as passed to avoid dependency issues");
Reporter.getCurrentTestResult().setStatus(ITestResult.SUCCESS);
tc.getPassedTests().addResult(method.getTestResult(), Reporter.getCurrentTestResult().getMethod());
tc.getPassedTests().getAllMethods().remove(Reporter.getCurrentTestResult().getMethod());
}