Я выполняю тесты TestNG, и вывод входа установлен на DEBUG
, таким образом в случае отказа я могу добраться для осмотра точно, что идет не так, как надо.
Проблема состоит в том, что вывод является чрезвычайно подробным, и он беспокоит всех, когда он работает. Я хотел бы получить все события входа Log4J - который легок - и только распечатайте их, когда тест перестал работать. Кроме того, я должен принять во внимание @Before/@After
методы и также печатают вывод для них.
Предположение, что у меня уже есть Список Log4J LoggingEvent
s, как я могу распечатать их только когда Test
/After
/Before
сбой методов?
Реализуйте и зарегистрируйте org.testng.ITestListener и отреагируйте на методы обратного вызова.
На этом сайте есть объяснение, как это сделать. . Я скопировал сюда часть кода на случай, если ссылка отключится.
Logger.getLogger(this.getClass())
log4j.rootLogger=ERROR,TESTAPPENDER
log4j.appender.TESTAPPENDER=com.my.fantastic.MockedAppender
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class FooTest {
private Appender appenderMock;
@Before
public void setupAppender() {
appenderMock = mock(Appender.class);
Logger.getRootLogger().addAppender(appenderMock);
}
@After
public void removeAppender() {
Logger.getRootLogger().removeAppender(appenderMock);
}
@Test
public void testMethod() {
doStuffThatCausesLogging();
verify(appenderMock).doAppend((LoggingEvent) anyObject());
}
}
ArgumentCaptor arguments = ArgumentCaptor.forClass(LoggingEvent.class);
verify(appenderMock).doAppend(arguments.capture());
assertThat (arguments.getValue (). GetLevel (), is (Level.WARN));