配置失败时的 TestNG 自定义错误消息

TestNG custom error message on configuration failure

可以创建测试操作的自定义处理,例如:onTestStartonTestSuccessonTestFailure 等。可以使用 TestNG 自定义侦听器(here is an article about this).

但是所有的配置失败,跳过都不会被它处理,e.g.用注释 @BeforeTest@BeforeClass@AfterClass 等定义的方法。我有这样的日志:

FAILED CONFIGURATION: @BeforeTest setUp
org.testng.internal.thread.ThreadTimeoutException: Method org.testng.internal.ConfigurationMethod.setUp() didn't finish within the time-out 10000
...
SKIPPED CONFIGURATION: @BeforeClass openModule1
SKIPPED CONFIGURATION: @AfterClass closeModule1
SKIPPED CONFIGURATION: @BeforeClass openModule2
SKIPPED CONFIGURATION: @AfterClass closeModule2
SKIPPED: testOpenTabs
SKIPPED: testPrint
SKIPPED: testFilterDataRequest

是否有可能为配置操作创建侦听器?

所有这些都用 IConfigurationListener 完成了。 ConfigurationListener class 看起来像这样:

public class ConfigurationListener implements IConfigurationListener {

    @Override
    public void onConfigurationSuccess(ITestResult itr) {
        Logger.log("LOG From ConfigurationListener onConfigurationSuccess:: ");
    }

    @Override
    public void onConfigurationFailure(ITestResult itr) {
        Logger.log("LOG From ConfigurationListener onConfigurationFailure:: ");     
    }

    @Override
    public void onConfigurationSkip(ITestResult itr) {
        Logger.log("LOG From ConfigurationListener onConfigurationSkip:: ");        
    }

}

并且不要忘记为 TestNG 提供监听器,例如通过在基础测试中使用注释 class:

@Listeners({ TestListener.class, ConfigurationListener.class})
public class TestBase {
    ...

这是一个nice article about different listeners in