gpt4 book ai didi

java - TestNG Listener 的 TestNG BeforeClass 和 AfterMethod 等效方法

转载 作者:行者123 更新时间:2023-11-30 07:26:54 25 4
gpt4 key购买 nike

采用以下基类方法 testSetup() 和 getStatusAndAnnotation() 并将它们放入 TestNG Listener 中。我可以找到与 @BeforeClass 等效的 onBeforeClass(ITestClass, IMethodInstance)。但是,@AfterMethod 的等价物是什么?

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

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

它没有帮助,而且给了

java.lang.NoSuchMethodException: client.test.reporting.listeners.TestRailListener.test_getVersion()
at java.lang.Class.getMethod(Class.java:1670)

这里Java:1670是

 throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes));
<小时/>
**@BeforeClass
public static void testSetup() throws InterruptedException, IOException, APIException {
initTestRail();
}
@AfterMethod
public void getStatusAndAnnotation(ITestResult result) throws NoSuchMethodException, IOException, APIException {
HashMap<Object, Object> map = new HashMap<>();
Method m = getClass().getMethod(result.getName());
TestCase annotation = m.getAnnotation(TestCase.class);
try {
map.put("testRailCaseId",annotation.testRailCaseId());
}catch (NullPointerException e){}
if (result.isSuccess()) {
map.put("result", 1);
} else {
map.put("result", 5);
}
if(annotation.testRailDeployEnable() && !map.get("testRailCaseId").equals(null) && !map.get("testRailCaseId").toString().isEmpty())
{
TestRailIntegration.addTestResult(map);
}
else System.out.println("Deploying result was canceled, because test has annotation \"testRailDeployEnable: false\" or \"testRailCaseId\" has no value");
}**

执行每个方法后,无论状态如何(通过/失败/跳过),我想执行此 getStatusAndAnnotation...() 但它给出了上述异常/错误。

最佳答案

我认为您可以实现org.testng.ITestListener,但不是单个方法afterInvocable(),它有多个方法,具体取决于结果:onTestSuccess() onTestFailure()onTestSkipped() 等。每个方法都会传递 ITestResult 对象,该对象还包含正在执行的方法:


@覆盖
公共(public)无效onTestSuccess(ITestResult iTestResult){
方法方法 = iTestResult.getMethod().getConstructorOrMethod().getMethod();
Annotation[] 注释 = method.getDeclaredAnnotations();
...
}

关于java - TestNG Listener 的 TestNG BeforeClass 和 AfterMethod 等效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36702744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com