2016-09-22 5 views
0

私は@Test(テストメソッド)、@AfterClassが呼び出されたことを知りました。だから私はそれを行うには、次のコードを書いたことを知っている:パラメータとして@AfterClassメソッドのITestNGMethodを渡す方法はありますか?

@AfterClass(alwaysRun = true) 
    public synchronized void tearDownClass(final ITestNGMethod itx) { 

    final Method m = itx.getConstructorOrMethod().getMethod(); 

    System.out.println(m.getName()); 

} 

しかし、TestNGのは、次のエラーがスローされます。 方法tearDownClassは1つのパラメータが必要ですが、0を@Configuration注釈に供給しました。

私の質問は、上記の問題を解決する方法またはこれを達成するための他の方法があります。

ありがとうございます。

答えて

0

ITestNGMethodはメソッドを表し、クラスは多くのメソッドを持つことができるため機能しません。

代わりにITestContextを注入して、その中にあなたのメソッドを探します。

+0

ITestContextを使用すると、すべての '@Testメソッド'が得られます。しかし、@Testメソッド、現在の '@AfterClass'メソッドが実行された後のような詳細を提供できるメソッドは見つかりませんでした。私の質問が明確でない場合は、私が説明のためのサンプルコードを提供できるように私に教えてください。 –

+0

私がよく理解すれば、クラスの最後に実行されたメソッドが必要ですか? – juherr

2

これは意味をなさないでしょう:@AfterClassメソッドです。これは、クラスのすべてのテストメソッドが実行された後に呼び出されます。特定のシナリオ(呼び出された最後のメソッドを知りたい)は非常に具体的なので、自分で実装する必要があります。

たとえば、フィールドlastMethodを作成し、それぞれのメソッドに名前を設定して、@AfterClassに到達したときに最後に実行されたものがわかるようにすることができます。

+0

指示通りに実装され、魅力的に機能しました。ありがとう@ケドリック。 –

+0

あなたは私を持っています!それはまさに私が提案するものです! – juherr

関連する問題