我正在嘗試使用組來運行與我正在調用的「當前」相關的測試子集。問題是,如果我使用超類在@BeforeMethod中進行一些設置,則在運行所有測試時運行該方法,但當我僅使用指定的「current」組運行時,該方法運行。TestNG @BeforeMethod方法駐留在超類中並且運行特定組時未被調用
因此,當我運行所有測試時,emptyTest失敗,因爲@BeforeMethod被調用,當只運行組current時,方法不會被調用。注意:如果我將@Test(groups = {「current」})添加到子類,那麼它會運行 - 但是,它會運行所有未標記爲「current」的子類,這會破壞「當前」組的目的。
如果有更好的方法來完成這種行爲,我向所有解決方案開放。
感謝, 贖金
超類:
public class TestNGSuperclass {
@BeforeMethod
public void failingToShowThatItIsNotRun() {
Assert.fail();
}
}
子類:
@Test(groups = {"current"})
public class TestNGCurrentGroup extends TestNGSuperclass {
public void emptyTest() {}
}
TestNG的配置:
<test name="current">
<groups>
<run>
<include name="current"/>
</run>
</groups>
<packages>
<package name="uiowa.wf.test.*"/>
</packages>
</test>
<test name="all-tests">
<packages>
<package name="uiowa.wf.test.*"/>
</packages>
</test>
這對我來說很有用 - 因爲我從來沒有運行過與目前相反的模式 - 我只是運行最新的功能,直到我的功能中的所有功能都完成 - 然後進行所有測試以確保我沒有退步。 – 2011-02-16 18:35:56
如果你有一個很好的關於如何使用TestNG組合的資源 - 那也會非常有幫助。 – 2011-02-16 18:36:27