#java #spring #testng #spring-test
#java #spring #testng #spring-test
Вопрос:
У меня есть несколько очень сложных интеграционных тестов, написанных с использованием Spring Test framework. Что я хотел бы сделать, так это извлечь последние n строк из файла журнала сервера на случай, если тест не удался.
Для этих целей я создал test:
@TestExecutionListeners({LogFetchingTestListener.class})
public MyComplexTestClass extends AbstractTestNGSpringContextTests {
@Test
public void myComplexTest() {
// Here goes the test logic...
}
}
и прослушиватель тестов:
public class LogFetchingTestListener extends ABstractTestExecutionListener {
@Override
public void afterTestExecution(TestContext context) {
// Use some spring beans to get entities to connect to servers
}
}
Все в порядке, но я не смог найти свойства в TestContext
или где-то еще, которые позволят мне узнать, не удался ли мой тест или нет.
Это довольно важно, поскольку у меня есть большое количество тестов, и совершенно бессмысленно извлекать журналы для тестовых случаев, которые были успешно запущены.
Предоставляет ли Spring эту информацию в прослушивателях тестов? Если нет, есть ли какие-либо обходные пути для этого?
Спасибо.
Ответ №1:
Я бы рекомендовал переопределить afterTestMethod(TestContext)
вместо afterTestExecution(TestContext)
, поскольку первое будет выполнено после @AfterMethod
методов жизненного цикла в тестовом классе.
Чтобы получить исключение (т. Е. причину неудачного теста), вам просто нужно получить доступ testContext.getTestException()
.
Комментарии:
1. Сэм, спасибо, что указал метод, который я должен переопределить! Я правильно понимаю, что тест всегда не равен null для неудачных тестовых случаев? Возможно ли, что в успешном тестовом примере это поле также будет заполнено, например, когда я ожидаю это исключение и подтверждаю, что оно было выдано?
2. Я думаю, это зависит от используемой вами платформы тестирования и от того, как / где вы «ожидаете это исключение и подтверждаете, что оно было выдано».