我试图在我的@AfterMethod中检测跳过的测试,以进行报告。

我可以捕获失败或通过的测试,但是跳过测试时似乎无法输入。

我的测试:

@Test
public void method1 () {
    Assert.fail("created failure");
}
@Test (dependsOnMethods = {"method1"})
public void method2 () {}


我的AfterMethod:

@AfterMethod
protected void afterMethod(ITestResult result){
    switch (result.getStatus()) {
        case ITestResult.FAILURE:
            ...
            break;

        case ITestResult.SKIP:
            ...
            break;

        case ITestResult.SUCCESS:
            ...
            break;
    }


例如,在这里我仅检索失败,但是在after方法中跳过未通过

有什么想法吗?

谢谢 !

最佳答案

我通过实现ITestListener类找到了一种实现方法,您可以在其中找到一个示例:

https://github.com/khmarbaise/testng-example/blob/41861115eb0ea1d98eed97fcfeb7ff30e93e0925/src/test/java/com/soebes/testing/testng/IntegrationTestListener.java

基本上,您要做的就是创建一个类,该类将捕获所有ITestResult甚至是跳过的ITestResult,并在其中重新定义您想要执行的操作:

public class IntegrationTestListener implements ITestListener {
   public void onTestSkipped(ITestResult result) {
       // do your stuff here
   }
}


并在测试中使用它,就像这样:

@Listeners ({IntegrationTestListener.class})
public class NotAScenario  extends BasicScenario {

    @Test
    public void test1() {
    }
}

09-13 14:03