1

以下を取得して、base class methods testSetup() and getStatusAndAnnotation()TestNG Listener に入れます。@BeforeClassasに相当するものを見つけることができましたonBeforeClass(ITestClass, IMethodInstance)。ただし、に相当するものは何@AfterMethodですか?

私の目的は、テスト結果を保持するため、 ITestResult をパラメーターとしてそのメソッドに渡すことです。以下のコードは、テストの注釈とステータスを取得し、それをテストレール クラウドにプッシュしていることを示しています。私は使用してみました:

@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");
}**

すべてのメソッドが実行された後、ステータス (PASS/FAIL/SKIP) に関係なく、この getStatusAndAnnotation...() を実行したいのですが、上記の例外/エラーが発生します。

4

1 に答える 1

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(); ... }

于 2016-04-19T16:01:04.143 に答える