我正在执行TestNG测试,并且日志输出设置为DEBUG,因此在出现故障时,我可以检查到底是什么地方出了问题。问题是输出非常冗长,运行时会让每个人都感到困扰。我想捕获所有Log4J日志事件-这很容易-并且只在测试失败时打印它们。此外,我需要考虑@Before/@After方法,并打印它们的输出。假设我已经有了一个Log4J LoggingEvent的列表,如何仅在Test/After/Before方法失败时才打印这些列表?
DEBUG
@Before/@After
LoggingEvent
Test
After
Before
6jjcrrmo1#
使用Reporter.log(str)将消息记录到报告中。
@AfterMethod public void printLOGonFailure(ITestResult result) { if (result.getStatus() == ITestResult.FAILURE) { String str = getLog(); Reporter.log(str); } }
vyu0f0g12#
This site has a explanation on how to do it.。我在这里复制了代码部分,以防链接失效。
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());
如果是这样的话,那么就可以用一个简单的方法来实现。
nbnkbykc3#
实作并注册org.testng.ITestListener,并在回呼方法上回应。
hrirmatl4#
把JMockit放在依赖项中。有了它,日志测试就很容易了。放入测试类:
@Cascading final static Logger logging = Logger.getLogger(<some your>.class);
进行测试:
testedFunction(a, b, c); new Verifications() {{ logging.error("The message that should be output"); logging.info("Another message"); }};
l7mqbcuq5#
你可以使用像下面这样的代码:
@AfterMethod public void printLOGonFailure(ITestResult result) { if (result.getStatus() == ITestResult.FAILURE) { final Logger logger = Logger.getLogger(Create_Case_from_an_Account.class); PropertyConfigurator.configure("C:\\Users\\svcSelenium\\eclipse-workspace\\SeleniumWork\\classes\\log4j.properties"); logger.error("Opps!!Test Failed due to:"+result.getThrowable()); } }
5条答案
按热度按时间6jjcrrmo1#
使用Reporter.log(str)将消息记录到报告中。
vyu0f0g12#
This site has a explanation on how to do it.。我在这里复制了代码部分,以防链接失效。
如果是这样的话,那么就可以用一个简单的方法来实现。
nbnkbykc3#
实作并注册org.testng.ITestListener,并在回呼方法上回应。
hrirmatl4#
把JMockit放在依赖项中。有了它,日志测试就很容易了。
放入测试类:
进行测试:
l7mqbcuq5#
你可以使用像下面这样的代码: