Selenium 如何根据TestNG断言结果使用Log4j级别?

Selenium 如何根据TestNG断言结果使用Log4j级别?,selenium,log4j,automated-tests,testng,Selenium,Log4j,Automated Tests,Testng,我正在使用TestNG,在每次测试的最后都有一个断言验证 Assert.assertEquals(true, mainPage.menu.isDisplayed()); 如何使用Log4j记录此操作的结果? 如果测试失败-Log4j级别为error,如果测试通过-Log4j级别为info。要实现这一点,必须实现testng侦听器。 信息可在此处找到: 在创建实现它们的类之后,在相关方法中,您可以将记录器设置为具有适当的日志级别 例如: public class TestNGListener i

我正在使用TestNG,在每次测试的最后都有一个断言验证

Assert.assertEquals(true, mainPage.menu.isDisplayed());
如何使用Log4j记录此操作的结果?
如果测试失败-Log4j级别为error,如果测试通过-Log4j级别为info。

要实现这一点,必须实现testng侦听器。 信息可在此处找到:

在创建实现它们的类之后,在相关方法中,您可以将记录器设置为具有适当的日志级别

例如:

public class TestNGListener implements ITestListener, ISuiteListener, IInvokedMethodListener {

    protected Logger logger = LogManager.getLogger(this.getClass());

    @Override
    public void onTestStart(ITestResult iTestResult) {

    }

    @Override
    public void onTestSuccess(ITestResult iTestResult) {

        logger.info("Test successfully executed.");
    }

    @Override
    public void onTestFailure(ITestResult iTestResult) {

        logger.error("Test Failed with message: " + iTestResult.getThrowable().getMessage());
    }
}
@Listeners(TestNGListener.class)
public abstract class AbstractTest {
}
之后,将侦听器附加到测试类中,或者如果您有一些复杂的抽象页面结构,则最好位于底部

例如:

public class TestNGListener implements ITestListener, ISuiteListener, IInvokedMethodListener {

    protected Logger logger = LogManager.getLogger(this.getClass());

    @Override
    public void onTestStart(ITestResult iTestResult) {

    }

    @Override
    public void onTestSuccess(ITestResult iTestResult) {

        logger.info("Test successfully executed.");
    }

    @Override
    public void onTestFailure(ITestResult iTestResult) {

        logger.error("Test Failed with message: " + iTestResult.getThrowable().getMessage());
    }
}
@Listeners(TestNGListener.class)
public abstract class AbstractTest {
}
通过以下配置,您可以接收特定于test/sutes/等的testng事件

祝你好运: