При выполнении теста (с Citrus или нет) может возникнуть исключение, если тест ожидает сообщение в очереди, но сообщение не получено до истечения времени ожидания.
В этом случае я хотел бы знать, какая строка выдает исключение.
К сожалению, цитрусовые не отображают эту информацию.
Вот мой код:
@Test
@CitrusTest
public void testFail() {
sequential().actions(
mycheckNoError1(),
mycheckNoError2(),
mycheckNoError3(), //this one fails , we want to know it and which line throws the ActionTimeoutException
mycheckNoError4()
);
}
protected AbstractActionContainer mycheckNoError3() {
AbstractActionContainer aCatch = catchException().exception(ActionTimeoutException.class)
.when(receive("for_soap_q")
.timeout(100L)
.validationCallback(validationCallbackFunc()
))
.addTestAction(timeoutException(Thread.currentThread().getStackTrace()));
return aCatch;
}
А вот стек трассировки цитрусовых, который не показывает строку, которая выдает исключение:
...
INFO .c.r.LoggingReporter|
ERROR .c.r.LoggingReporter| TEST FAILED MyTest.test <package.test> Nested exception is:
com.consol.citrus.exceptions.ActionTimeoutException: Action timed out while receiving JMS message on 'testQueue'
at com.consol.citrus.jms.endpoint.JmsConsumer.receive(JmsConsumer.java:95) ~[citrus-jms-2.7.5.jar:na]
at com.consol.citrus.jms.endpoint.JmsConsumer.receive(JmsConsumer.java:60) ~[citrus-jms-2.7.5.jar:na]
at com.consol.citrus.jms.endpoint.JmsSyncConsumer.receive(JmsSyncConsumer.java:60) ~[citrus-jms-2.7.5.jar:na]
...
Единственный способЯ обнаружил, что должен был передать stacktrace как параметр метода timeoutException (), который я написал:
private TestAction timeoutException(StackTraceElement[] methodName) {
System.out.println("++++++++++ timeout Exception at line " + methodName[1].getLineNumber() + " in method: [" + methodName[1].getMethodName() + "]");
return null;
}
Но я думаю, что есть лучший способ сделать это.
Есть ли способправильно настроить citrus и / или переопределить LoggingReporter, чтобы показать номер строки, из-за которой произошло исключение?
(в данном случае это строка: когда (приём ("for_soap_q") ...)
спасибо.