2016-11-10 94 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()方法,如果測試方法失敗,應該跳過。我怎樣才能做到這一點?

+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

是的,我現在認爲這應該是正確的解決方案,但是項目規範要求childs類實現配置方法。這就是爲什麼我在父類的beforeTest聲明之前使用abstract關鍵字。 – user3552976

+0

然後你的解決方案是正確的。 – Vlad

+0

你應該在你的testng套件中運行子類。另外,在重寫方法時總是使用@Override註解(重構代碼時它會有很大幫助) – Vlad