我想你應該稍微改變自己的戰術。而不是感知這些〜(dbResetTest等)作爲測試類,您應該讓它們測試方法,並以編程方式(而非XML)而不是dependsOnGroups使用dependsOnMethods。然後,您將能夠輕鬆實現所需的邏輯(每個測試都是唯一的 - > @Test註釋,每個測試都以特定優先級執行 - >使用優先級參數)。然後1,2,3測試應該是你的測試類。因此,這裏是你怎麼做:如果
public class LoginFeature {
@Test (priority=1)
public openURLTest(){
}
@Test (priority=2, dependsOnMethods="openURLTest")
public dbResetTest(){
}
@Test (priority=3, dependsOnMethods="dbResetTest")
public clearCacheTest(){
}
@Test (priority=4, dependsOnMethods="clearCacheTest")
public loginTest(){
}
}
這樣的東西你的測試失敗之間在會自動跳過的情景休息,你會不會需要直接調用clearCacheTest。
希望這會有所幫助!
更新
OP的評論
好後,我再次覺得你還挺有一個設計問題。爲了讓你的方法被多次調用,他們需要坐在他們可以訪問的地方。你幾乎在那裏與你的方法,但不完全。所以這裏是你如何調用方法。多次,都從頭運行它們(我會先告訴你的代碼,然後詳細解釋):
父類
public class TestBase{
//include here all your important methods *without* @Test Annotation
public void dbReset(){
//perform db reset
}
public void clearCache(){
//clear browser cache
}
public boolean openURL(){
//try to open test URL
return didIreachTestURLSuccessfully;
}
}
子類
public class loginFeature extends TestBase{
@Test (priority=1)
public void attemptToResetDataBase(){
dbReset();
}
@Test (priority=2, dependsOnMeth0ds="attemptToResetDataBase")
public void clearCacheTest(){
clearCache();
}
@Test (priority=3, dependsOnMeth0ds="clearCacheTest")
public void verifySuccessfulLogin(){
login();
}
}
因此,您將所有測試方法都包含在名爲TestBase的父類中。然後你用一個擴展了TestBase的類創建你的測試(例如loginTest)。現在你可以多次調用你的方法,每次將它們作爲一個單獨的測試對待,並根據你的需要將它們與依賴關聯起來(也就是說,我根據先前的方法將它們中的每一個連接起來;但是你可以重新排列它們並將它們全部放到取決於一個,還是沒有人)。
因爲您的測試類從TestBase繼承,您甚至不需要創建一個對象來訪問內部方法;你可以直接打電話給他們。
希望這可以爲你解決,如果你需要更多的信息,請不要猶豫,寫評論。
不幸的是,這不是我想要實現的。我提到的這些測試已經構建爲@Test方法。我希望從其他測試和其他類中多次調用這些方法。現在,當一些測試依賴於clearCacheTest時,它會被調用一次,如果另一個測試也依賴於clearCacheTest,它將不會再被調用,因爲它已經通過了...但我不僅希望它通過,而且實際上做了在這兩個測試之前清除緩存兩次。 –
好的喬恩得到你,將更新我的答案,以反映你的更新。我仍然認爲它是可以實現的,但:) :) –
幾乎在那裏;)我已經試過這種方法在一開始,它甚至工作,但很快我意識到,它給了我虛假的測試報告。你看,dbReset這種方式沒有被定義爲一個測試,所以當我運行我的測試編號1即loginFeatureTest:(openURLTest-> dbResetTest-> clearCacheTest-> loginTest)和dbReset失敗,出於某種原因,我會得到報告,就好像整個loginFeatureTest失敗,我希望看到它實際上是dbResetTest錯誤。也許唯一的選擇是從loginFeatureTest中調用dbReset並用消息聲明它的結果? –