Мы использовали testng
с java
для выполнения интеграционных тестов для нашего кода. Мы реализовали слушателя для выполнения теста следующим образом: -Получение последовательных журналов при параллельном выполнении тестов
public class TestExecutionListener implements IInvokedMethodListener {
@Override
public void beforeInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
System.out.println("Testing : " + iInvokedMethod.getTestMethod().getMethodName());
}
@Override
public void afterInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
System.out.println("Successfully Tested : " + iInvokedMethod.getTestMethod().getMethodName());
}
}
Наш testng.xml определяется как: -
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestSuite" verbose="1" parallel="classes" thread-count="10">
<listeners>
<listener class-name="core.TestExecutionListener"/>
</listeners>
<test name="IntegrationTests">
<classes>
<class name="test.SomeTest1"/>
<class name="test.SomeTest2"/>
<class name="test.SomeTest3"/>
<class name="test.SomeTest4"/>
... There are more than 20 classes
</classes>
</test>
</suite>
Как мы выполняем тесты, выход, который мы получаем, составляет:
Testing : SomeTest1Method1 Testing : SomeTest2Method2 Testing : SomeTest4Method5 Successfully Tested : SomeTest2Method2 Successfully Tested : SomeTest4Method5
а то, что мы бы ожидать выход быть это: -
Testing : SomeTest1Method1 Successfully Tested : SomeTest1Method1 Testing : SomeTest2Method2 Successfully Tested : SomeTest2Method2 Testing : SomeTest4Method5 Successfully Tested : SomeTest4Method5
Гадание это из-за атрибута parallel="classes"
в XML, поскольку изменение его false
обеспечивает желаемое вывод. Но, как очевидно, изменение исполнения требует гораздо большего времени по сравнению с параллельным исполнением.
Есть ли способ запустить эти тесты параллельно, но все равно получить этот вывод в последовательности?
Вход в различные регистраторы затем выходные в блоке Afterall? –
@PaulHicks - дальнейшие намеки на это, пожалуйста. Не удалось получить часть регистрации в разных регистраторах. – nullpointer
Используйте утилиту регистрации, например log4j. Получите от него журнал, используя что-то конкретное для вашего теста (у вас есть интерфейс IInvokedMethod, которого хватит, может быть что-то более подходящее).Войдите в него, вместо использования 'System.out'. По желанию в конце, прочитайте из всех регистраторов и соединитесь с 'System.out'. –