2015-05-27 38 views
0

你好我正在學習Appium在我的應用上自動化測試用例。Appium Android測試用例,它是如何工作的?

我設法運行一個簡單的腳本,但我不明白像android生命週期運行過程的邏輯。

什麼是測試用例的循環。

因爲當我運行下面的代碼,它不會爲了作爲,爲test1,test2的,TEST3運行...

我們如何告訴測試用例了首先要以什麼順序運行? 感謝

package appium.learning; 

import java.net.MalformedURLException; 
import java.net.URL; 

import org.junit.AfterClass; 
import org.junit.BeforeClass; 
import org.junit.Test; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.remote.CapabilityType; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.remote.RemoteWebDriver; 

public class LearningTest { 

    WebDriver driver; 

    @BeforeClass 
    public void setUp() throws MalformedURLException{ 
     DesiredCapabilities capabilities = new DesiredCapabilities(); 
     capabilities.setCapability("device", "Android"); 
     capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); //Name of mobile web browser to automate. Should be an empty string if automating an app instead. 
     capabilities.setCapability(CapabilityType.VERSION, "4.4"); 
     capabilities.setCapability(CapabilityType.PLATFORM, "Android"); 
     capabilities.setCapability("app-package", "com.myapp"); //Replace with your app's package 
     capabilities.setCapability("app-activity", ".myapp"); //Replace with app's Activity 
     driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
    } 




    @AfterClass 
    public void tearDown(){ 
     driver.quit(); 
    } 


    @Test 
    public void Cal1(){ 
     driver.findElement(By.name("1")).click(); 
    } 
    @Test 
    public void Cal2(){ 
     driver.findElement(By.name("2")).click(); 
    } 
    @Test 
    public void Cal3(){ 
     driver.findElement(By.name("3")).click(); 
    } 
    @Test 
    public void Cal4(){ 
     driver.findElement(By.name("4")).click(); 
    } 

} 
+0

你是如何運行代碼的?你沒有使用eclipse中的junit選項運行。在junit runner中,您可以看到所有測試用例並全部或單獨運行它們。 – Vaibhav

+0

是的,使用Eclipse,右鍵單擊並運行爲junit, – Joolah

+0

另一個問題,爲什麼每次運行測試,它是安裝apk文件? – Joolah

回答

4

在您的測試中,它是必不可少的沒有測試的依賴,這意味着一個測試不應該依賴於另一個測試的輸出。每個測試應該是獨一無二的。因此,您需要訂購您的測試已被淘汰。

JVM在運行時隨機決定哪個測試將首先運行。訂單是隨機的。這是因爲你不需要按照特定的順序運行測試。

但是,有些註釋可以強制JVM以特定的順序運行測試,但這非常令人沮喪。

關於您在每次測試之間不卸載應用程序的問題,請讓我爲您澄清一下。因此,基本上,在下一次測試(以隨機順序)運行之前,每個用@Test 標註的測試將在末尾關閉()。

但是,僅僅因爲應用程序總是關閉並在測試之間重新打開並不意味着它總是被重新安裝。實際上有兩個主要功能允許您控制:

fullReset - (iOS)刪除整個模擬器文件夾。 (Android)通過卸載應用程序而不是清除應用程序數據來重置應用程序狀態。在Android上,這也會在會話完成後刪除應用程序。 ex。 capabilities.setCapability(「fullReset」,true/false);

noReset - 不要在會話之間重置應用程序狀態。 (IOS:不要刪除應用程序plist文件; Android:不要在新會話之前卸載應用程序) ex。 capabilities.setCapability(「noReset」,true/false);

此外,@BeforeClass註釋意味着該方法將在類中的所有測試之前運行一次,而@AfterClass與其相反。但是,我建議使用@Before和@After註釋setup和tearDown方法,這樣可以在每次測試運行之前和之後安裝並拆卸驅動程序。這將減少您的錯誤機會。

我希望這能給你一些基本實踐的好點子,最後一段也會給你一個關於生命週期的想法。

評論如果你還有任何問題。

快樂測試:)

+0

你好@qazimusab,謝謝你的回覆。非常詳細,真的很感謝你的時間。之所以我需要我的測試用例是爲了,因爲,第一我需要做登錄。那麼如果成功。遵循其他測試。當我使用第一例病例時,至少需要1分鐘。所以在測試2中,我不想再次進行登錄。 – Joolah

+0

因此,您可以每次都登錄,也可以不進行重置,以便用戶保持登錄狀態,前提是您的應用具有該功能。 – qazimusab

0

你的另一個選擇是登錄你測試前2開始:意合併測試案例。我有同樣的問題,只是改變測試步驟的邏輯解決了它。

相關問題