TestNG BeforeClass和AfterMethod TestNG侦听器的等效方法

时间:2016-04-18 19:29:15

标签: java annotations automated-tests testng testrail

取下面的base class methods testSetup() and getStatusAndAnnotation()并将它们放入TestNG Listener中。我可以找到等同于@BeforeClass的{​​{1}}。但是,onBeforeClass(ITestClass, IMethodInstance)的等价物是什么?

我的目标是将ITestResult作为参数传递给该方法,因为我将把测试结果保存到其中。下面的代码显示我正在获取测试的注释和状态,然后将其推送到testrail云。我尝试使用:

@AfterMethod

没有帮助,并给了

@Override
    public void afterInvocation(IInvokedMethod, ITestResult) {
        ..
    }

这里的Java:1670是

java.lang.NoSuchMethodException: client.test.reporting.listeners.TestRailListener.test_getVersion()
    at java.lang.Class.getMethod(Class.java:1670)
 throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes));

执行每个方法之后,无论状态如何(PASS / FAIL / SKIP),我都想执行这个getStatusAndAnnotation ...()但是它给出了上面的异常/错误。

1 个答案:

答案 0 :(得分:1)

我认为您可以实施org.testng.ITestListener,但不是单一方法afterInvocation(),而是取决于结果:onTestSuccess()onTestFailure()onTestSkipped(),每个方法都传递ITestResult对象,它还包含正在执行的方法:

@Override public void onTestSuccess(ITestResult iTestResult) { Method method = iTestResult.getMethod().getConstructorOrMethod().getMethod(); Annotation[] annotations = method.getDeclaredAnnotations(); ... }