2014-02-20 39 views
0

我已經能夠自動化我的應用程序的整個流程。我有一個處理流程自動化的testMethod()。我想將這個單一的方法分成幾個其他的方法來提高我的代碼的可讀性。然而,如果我將測試方法分解爲其他方法,我在這裏有一個問題,首先,執行的順序必須小心,更重要的是,一旦一個測試成功運行並關閉活動,我的Activity就會死亡,從而使以下測試成爲可能失敗。在Robotium中將testMethod()拆分爲多個testMethods() - Android JUnit測試用例

我該怎麼辦?有沒有什麼辦法可以將我的testMethod分成幾個testMethods()而沒有關閉活動?

包括我目前TestMethod的()

public void testApp() throws BiffException, IOException { 

    Excel rd= new Excel(); 
    rd.read(); 

    user = rd.getUser(); 
    pass = rd.getPass(); 
    bp = rd.getBill(); 
    rdc = rd.getRdc(); 
    pr = rd.getPr(); 

    // Login to the application 
    solo.enterText(0,user); // Enter user name 
    solo.sleep(1000); 
    solo.enterText(1,"xxx"); //some random password 
    solo.sleep(1000); 
    solo.clickOnButton(1); // Try Login! (bad login) 
    solo.sleep(5000); 
    solo.clickOnButton(0); 
    solo.sleep(2500); 
    solo.enterText(1,pass); // Enter Password (authentic password) 
    solo.sleep(2500); 
    solo.clickOnButton(1); // Try Login! (Valid login) 
    solo.sleep(10000); 

    // MFA 
    solo.clickOnButton(0); // choose Text Me (xxx-xxx-3576) 
    solo.sleep(20000); 

    //Account Summary 
    solo.clickOnButton(0); 
    solo.sleep(15000); 

    //Account History 
    if(solo.searchText(ch)){ 
     solo.clickOnText(ch); 
     solo.sleep(10000); 
    } 
    else if (solo.searchText(sv)){ 
     solo.clickOnText(sv); 
     solo.sleep(10000); 
    } 
    else{ 
     solo.clickInList(1); 
    } 

    //Transfers 
    solo.clickOnMenuItem("Transfers"); 
    solo.sleep(10000); 
    solo.clickOnText("From"); //choose 'From' account 
    solo.sleep(5000); 
    solo.clickInList(1); //click on first available account 
    solo.sleep(5000); 
    solo.clickOnText("To"); //choose 'To' account 
    solo.sleep(5000); 
    solo.clickInList(2); //click on second available account 
    solo.sleep(5000); 
    solo.clickOnText("Amount"); //Amount to transfer 
    solo.sleep(10000); 
    solo.typeText(0,"10.00"); //enter amount for over limit transfer 
    solo.sleep(5000); 
    solo.clickOnButton("Transfer"); 
    solo.sleep(10000); 
    solo.clickOnButton(0); 
    solo.sleep(5000); 

    //Bill Pay 
    if(bp.equalsIgnoreCase(flag)){ 
     solo.clickOnMenuItem("Bills"); 
     solo.sleep(10000); 
    } 

    //RDC 
    if (rdc.equalsIgnoreCase(flag)) { 
     solo.clickOnMenuItem("Deposits"); 
     solo.sleep(10000); 
     //solo.scrollUp(); 
     //solo.sleep(10000); 
    } 

    //PR 
    if(pr.equalsIgnoreCase(flag)){ 
     solo.clickOnMenuItem("Rewards"); 
     solo.sleep(1000); 
    } 

    //More 
    solo.clickOnMenuItem("More"); 
    solo.sleep(10000); 

    //Call 
    solo.clickOnButton(0); 
    solo.sleep(10000); 
    solo.clickOnButton(0); //cancel 
    solo.sleep(10000); 

    //Logout 
    solo.clickOnImage(0); //click on Logout 
    solo.sleep(5000); 
    solo.clickOnButton(1); //to cancel the logout 
    solo.sleep(5000); 
    solo.clickOnImage(0); //click on Logout 
    solo.sleep(10000); 
    solo.clickOnButton(0); //Yes 
    solo.sleep(10000); 
} 

期待您的幫助!

在此先感謝!

回答

0

使用JUnit3在方法名稱中具有「test」前綴的每個方法都會告訴TestRunner它正在測試。

如果你想分割你的testApp方法,但其他方法不必在他們的名字中有「test」前綴。

1

你可以做這樣的事情:

public void testApp() throws BiffException, IOException { 
login(); 
... 
logout(); 
} 

private void login(){ 
// Login to the application 
    solo.enterText(0,user); // Enter user name 
    solo.sleep(1000); 
    solo.enterText(1,"xxx"); //some random password 
    solo.sleep(1000); 
    solo.clickOnButton(1); // Try Login! (bad login) 
    solo.sleep(5000); 
    solo.clickOnButton(0); 
    solo.sleep(2500); 
    solo.enterText(1,pass); // Enter Password (authentic password) 
    solo.sleep(2500); 
    solo.clickOnButton(1); // Try Login! (Valid login) 
    solo.sleep(10000); 
} 

private void logout(){ 
    solo.clickOnImage(0); //click on Logout 
    solo.sleep(5000); 
    solo.clickOnButton(1); //to cancel the logout 
    solo.sleep(5000); 
    solo.clickOnImage(0); //click on Logout 
    solo.sleep(10000); 
    solo.clickOnButton(0); //Yes 
    solo.sleep(10000); 
} 

於是開始測試時的測試(例如testMethod1,testApp等)的所有方法將被調用,他們所稱的其他子方法。

無論如何不可能恢復應用程序的以前的狀態。

另一種解決方案是,您使用前提條件編寫測試:例如,所有測試都需要應用程序登錄。