2012-11-29 26 views
0

我的情況是:TestNG的 - 導入/運行不同類別的測試

public class ExampleTest extends AbstractExampleTest { 
    @Test(dependsOnMethods={"someMethodFromAbstractExampleTest"} 
    public void firstTest() { 
     // Assert 
    } 

    // here I would like to call CommonTests 
} 

public class CommonTests { 
    @Test 
    public void sharedTest() { 
     // Assert 
    } 
} 

的原因類似CommonTests存在,是它將包含重複的測試序列。我目前將ExampleTest中的信息傳遞給CommonTests的方式是通過似乎可行的靜態功能完成的,但可能不是最好的。

如果我根據TestNG文檔以編程方式調用CommonTests,此工作正常。我遇到的問題是結果沒有記錄在ExampleTest的runner中。

@Test 
public void actionBasedTest(ITestContext context) { 
    TestListenerAdapter tla = new TestListenerAdapter(); 
    TestNG testng = new TestNG(); 
    testng.setTestClasses(new Class[] { ExampleAction.class }); 
    testng.addListener(tla); 
    context.getSuite().addListener(tla); 
    testng.run(); 
} 

上面的是稍微好一點,但彙報僅限於類似「[email protected]####」和不公開的測試方法運行。

所以我的問題是:我可以從另一個類(es)運行測試(es)(不通過繼承),並獲得結果記錄到同一個監聽器?

編輯:我想避免testng.xml。

回答

0

回答你最後一個問題,你可以使用testng.xml運行任何類的測試,它允許你以任何你喜歡的方式來構造你的測試。你可以在suite標籤中指定你的監聽器,並且這個監聽器可以用於你所有的類。請參考examples

+0

哦,是的,的確如此。儘管我希望避免使用testng.xml。 – happypolla

+0

只是好奇,是什麼原因? –

+0

我認爲能夠在沒有額外要求的情況下運行測試會很好(即直接從IDE運行該類)。在構建環境中,它會很好。 但我打算開始玩XML。我認爲IDE集成在那裏,所以它不是一個大麻煩。 – happypolla