2011-06-06 18 views
0

每個方法我沒有得到分組TestNG中是如何工作的運行後,我有這樣的代碼:TestNG的@AfterMethod特定組在Eclipse

@AfterMethod(groups = { "refreshPage" }) 
    public void refresh() throws IOException { 
     driver.navigate().refresh(); 
    } 

    @Test 
    public void test1() { 

    } 

    @Test(groups = { "refreshPage" }) 
    public void test2() { 

    } 

而且@AfterMethod既是後運行他們,即使只有第二個是該組的一部分。我想這與eclipse爲執行而生成的Template testng.xml配置文件無關。它只是整個測試類或單獨測試方法的準系統設置。所以應該不會影響集團

編輯:

所以,爲了有@AfterMethod只有一些方法後運行,並且運行整個測試類,我不得不兩次運行它,有兩組方法(有/無清爽)。

<test name="Test1"> 
    <groups> 
    <run> 
     <include name="refreshPage*"/> 
    </run> 
    </groups> 

    <classes> 
    <class name="example.Test"/> 
    </classes> 
</test> 

<test name="Test2"> 
    <groups> 
    <run> 
     <include name="dontRefreshPage*"/> 
    </run> 
    </groups> 

    <classes> 
    <class name="example.Test"/> 
    </classes> 
</test> 

我不知道如何做時,通過Eclipse開始它的工作,導致<test>在模板被替換。

回答

1

對不起,但我不明白你對問題的描述。你的兩個測試方法屬於「刷新」組,所以如果你運行該組,你會看到它們都運行,並且每個測試方法都會跟隨一個prepareTest()的調用(順便說一句, after方法將被稱爲「prepareTest()」,你確定你不是指這是一個@BeforeMethod?)。

雖然你的代碼有些奇怪:你的兩個測試方法聲明瞭一個數據提供者,但他們沒有任何參數。要麼他們需要參數,所以您應該更新他們的簽名以匹配數據提供者返回的內容,或者他們不會,並且您應該移除dataProvider屬性。

+0

對不起,我把它粘貼在那裏,現在它是正確的。我只需要在每個屬於該組的方法之後運行「refresh()」方法。但是,如果我在沒有進一步配置的情況下運行它,則refresh()方法在兩者之後運行,儘管它是爲「refreshPage」組聲明的。 test1,refresh,test2,refresh .... – lisak 2011-06-08 12:55:32

+0

因此,如果我通過eclipse Run As運行test1並生成模板配置,則在afterMethod之後進行刷新,這是預期的行爲嗎? – lisak 2011-06-08 13:05:03

+0

我想你是誤解了團體的目的。組並不指定什麼時候運行,他們告訴TestNG哪些方法應該包含在測試運行中。 – 2011-06-08 22:51:39

相關問題