2014-08-29 63 views
0

我正在尋找使用JUnit在硒中編寫測試用例的最佳實踐。在測試用例中使用if/switch /用於條件

如果某些測試是使用開關或者是否應將其拆分爲不同的測試用例以避免測試條件或使用條件爲'好' ?爲什麼?

編輯: 我需要知道,如果你有分裂,如果&切換到一個更小的測試,以避免使用這些條件是使用測試用例的選項,你寧願把它分解,或者你確定使用你的junit硒測試中的條件?

謝謝:-)

+1

你能舉一個你目前在做什麼的例子嗎?我不確定我是否明白你要完成的是什麼。 – user1071777 2014-08-29 19:17:28

回答

3

這可能有幫助...

測試應該是簡單的。快速。獨立。和IDEMPOTENT

如果您有大的switch聲明或if階梯,那麼是的。你應該把它們分成不同的測試。考慮以下幾點:(這是使用getting-started-with-selenium框架)

@Test @Config(url="http://someurl.com", browser = Browser.CHROME) 
public void myLongTest() { 
    setText("#username", "some_username") 
    .setText("#password", "some_password") 
    .click("#btn-login") 
    .store("some_variable", getText("#element"); 
    // some_variable will be "a" | "b" | "c" 
    switch ((String) get("some_variable")) { 
    case "a": 
     click("#a") 
     .validatePresent("#something"); 
     break; 
    case "b": 
     click("#b") 
     .validatePresent("#something-else"); 
     break; 
    case "c": 
     click("#c") 
     .validatePresent("#something-else-else"); 
     break; 
    } 
} 

不是長的測試,你可以瓜分這分爲三個不同的測試用例,每個,其中由傳統的標準將是一件好事,因爲測試會更快。

@Test @Config(url="http://someurl.com", browser = Browser.CHROME) 
public void myShortTest_CaseA() { 
    setText("#username", "some_username") 
    .setText("#password", "some_password") 
    .click("#btn-login") 
    .click("#a") 
    .validatePresent("#something"); 
} 

@Test @Config(url="http://someurl.com", browser = Browser.CHROME) 
public void myShortTest_CaseB() { 
    setText("#username", "some_username") 
    .setText("#password", "some_password") 
    .click("#btn-login") 
    .click("#b") 
    .validatePresent("#something-else"); 
} 

@Test @Config(url="http://someurl.com", browser = Browser.CHROME) 
public void myShortTest_CaseA() { 
    setText("#username", "some_username") 
    .setText("#password", "some_password") 
    .click("#btn-login") 
    .click("#c") 
    .validatePresent("#something-else-else"); 
} 
1

測試用例不應該有條件,因爲您應該知道輸入先驗。如果你的測試用例應該可以在不同的環境中移植,那麼我可以想到的唯一條件是,如果你的測試用例應該可以在不同的環境中移植,那麼根據它在什麼環境中執行,你會有分支。但是,即使在這種情況下,它也應該測試你的程序的一個方面(例如在Selenium中,你可以編寫一個測試來點擊一個按鈕並檢查它的效果)。要測試幾個方面,寫幾個測試用例。