2016-11-10 11 views
0

testNGに少し問題があります。私の例のコードの下に:TestNG beforetestが継承に失敗したときにテストをスキップする方法

abstract class parent { 

abstract void beforeTest(); 

@Test 
void test() { 
     // some testing 
} 
} 

class child extends parent { 

@BeforeTest 
void beforeTest() { 
     \\some before things 
} 
} 

そして、このコードを正しく動作させる方法は?だから私はbeforeTest()メソッドを実行したいと思うし、テストメソッドshoudスキップに失敗した場合。どうすればこのことを達成できますか?

+0

あなたはすでに欲しいのですか? – talex

+0

いいえ、beforeTestが失敗しても、テストメソッドが実行されるためです。 – user3552976

答えて

0

通常、設定方法はパラレントに入り、テストクラスはパラレントを拡張する必要があります。 あなたのテストにこの例を使用してみてください:

abstract class TestBase { 
    @BeforeTest 
    public void beforeTest() { 
     // do config here 
     // this will run for each of you <test> tag in your testng.xml suite 
    } 

    @BeforeMethod 
    public void beforeMethod() { 
     // do some config here 
     // this will run for each method annotated with @Test 
    } 
} 

class SomeTestClass extends TestBase { 
    @Test 
    public void some_test() { 
     // some testing 
    } 
} 
+0

はい、これは正しい解決策になるはずですが、子クラスが設定メソッドを実装することをプロジェクト仕様で要求するようになりました。それで、私はなぜ親クラスでbeforeTest宣言の前に抽象キーワードを使用するのですか? – user3552976

+0

あなたの解決策は正しいです。 – Vlad

+0

あなたのtestngスイートで子クラスを実行する必要があります。また、メソッドをオーバーライドするときは、常に@Overrideアノテーションを使用してください(コードをリファクタリングすると多くの助けになります) – Vlad

関連する問題