java - TestNG @AfterMethod 绑定(bind)到当前类的方法

标签 java testng

好吧,我有点困惑。

public class GroupDemo {

   @Test()
   public void test1() {
        System.out.println("test1");
   }
}

public class GroupDemoChild extends GroupDemo{

   @Test
   public void atest(){
       System.out.println("atest");
   }

   @AfterMethod
   public void after() {
       System.out.println("after method");
   }
}

这里合乎逻辑的是:

test1
atest
after method

但是我得到:

test1
after method
atest
after method

所以 after() 被调用了两次。

如何仅在声明类的方法之后运行它?

TestNG = 6.8.5; Java = 1.7

最佳答案

您还可以利用 IInvokedMethodListener 的自定义实现界面以及一些自定义注释。像这样的东西:

@Listeners({ com.somepackage.MethodInvocationListener.class })
public class GroupDemoChild extends GroupDemo{

   @Test
   @AfterEd
   public void atest(){
       System.out.println("atest");
   }
}

public class MethodInvocationListener implements IInvokedMethodListener {
    @Override
    public void beforeInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
        // doNothing
    }

    @Override
    public void afterInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestResult) {
        if (iInvokedMethod.getTestMethod().getConstructorOrMethod()
                .getMethod().getAnnotation(AfterEd.class) != null) {
                System.out.println("after method");
        }
    }
}

关于java - TestNG @AfterMethod 绑定(bind)到当前类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30481940/

相关文章:

java - 将参数传递到 TestNG XML

java - TestNG 中的注释是强类型的。这是什么意思?

java - 在 EDT 外使用 Component.repaint() 安全吗?

java - 查询嵌套文档数组以获得字段的最大值

java - java中如何计算调用接口(interface)方法的count参数?

java - Selenium 项目的建议

java - 如何跳过或忽略 TestNG 中的测试执行

java - 返回事物或导致调用范围/上下文返回的辅助方法

java - Ajax 请求参数,我做错了什么?

java - Selenium Java - 如何使用@符号登录警报