2015-06-08 14 views
5

Tôi chạy tập lệnh java appium thành công. Nhưng vấn đề là, Ứng dụng của tôi bắt đầu bằng trang đăng nhập. Sau khi đăng nhập, tôi có thể tự động hóa một số trường hợp kiểm tra.Nhưng tôi muốn quay lại từ trang đăng nhập thông qua tập lệnh để chạy trường hợp kiểm tra tiếp theo. .Làm thế nào tôi có thể đóng ứng dụng và cũng có thể từ chế độ nền và mở lại Nhờ có chương trình mà không cần cài đặt lại ứng dụng đó nữa? Vì testcases không nên phụ thuộc lẫn nhauMở lại ứng dụng mới thông qua kịch bản java appium cho Next Testcase

public class AppTest { 

    private static RemoteWebDriver driver; 

    @BeforeClass 
    public static void initSimulator() throws MalformedURLException 
    { 
      DesiredCapabilities capabilities = new DesiredCapabilities(); 

      capabilities.setCapability("platformName", "Android");    
      capabilities.setCapability("platformVersion", "5.0.1");   
      capabilities.setCapability("deviceName", "emulator-5554");     
      capabilities.setCapability("app", "D:\\adt-bundle-windows-x86_64-20140702\\sdk\\platform-tools\\Yr.apk");  
      capabilities.setCapability("app-package", "com.you.android");     
      capabilities.setCapability("app-activity", "com.yr.sts.SplashActivity");     
      capabilities.setCapability("app_wait_activity",".MainActivity"); 

      driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), 
       capabilities); 

      System.out.println("App Launched"); 
    } 
    @AfterClass 
    public static void quitDriver() 
    { 
     driver.quit(); 
     System.out.println("Driver has been Quit"); 
    } 

    @Test 
    public void sign_in_Click() throws InterruptedException 
    { 
     WebElement sign_button = driver.findElement(By.name("Sign-in")); 
     sign_button.click(); 
     WebElement usr = driver.findElement(By.id("com.you.android:id/et_login_email_or_mobile")); 
     usr.sendKeys("[email protected]"); 
     Thread.sleep(2000); 
     WebElement passwrd = driver.findElement(By.id("com.you.android:id/et_login_pwd")); 
     passwrd.sendKeys("123456789"); 
     Thread.sleep(2000); 
     driver.findElementByName("Sign in").click(); 
     Thread.sleep(5000); 
     assertTrue(true); 
    } 
    @Test 
    public void second_sign_in_Click() throws InterruptedException 
    {  
     //HERE I WANT TO REOPEN THE APPLICATION WITH SIGN IN AFTER CLOSING APP.BECAUSE IN 1st TESTCASE , I HAVE SIGNED IN.this is a 2nd test case  
    } 
} 

Trả lời

1

thay đổi @Beforeclass@AfterClass thẻ để @Trước khi@After tương ứng.

Ngay bây giờ, phương thức initSimulator() của bạn sẽ được gọi trước mỗi @Test và phương thức quitDriver() sẽ được gọi sau phương thức đó. Bằng cách này bạn sẽ có trình điều khiển mới (với ứng dụng rõ ràng) khởi động lại mọi trường hợp.

Vì vậy - như bạn thấy - trong JUnit, mọi trường hợp thử nghiệm đều độc lập theo mặc định.

Tại sao sự cố của bạn xảy ra? Từ @BeforeClass docs:

Đôi khi một số xét nghiệm cần chia sẻ tính toán đắt tiền thiết lập (như cách đăng nhập vào một cơ sở dữ liệu). Trong khi điều này có thể thỏa hiệp sự độc lập của các thử nghiệm, đôi khi nó là một tối ưu hóa cần thiết. Chú thích phương thức public void no-arg với @BeforeClass gây ra nó sẽ được chạy một lần trước bất kỳ phương pháp thử nào trong lớp.

BTW, phương pháp initDriver của tôi() trông như thế này, đó là cách tốt hơn để xử lý tài xế bỏ:

public void quitDriver() { 
     driver.closeApp(); 
     driver.quit(); 
     driver = null; 
    } 

(nó là tĩnh trong trường hợp của bạn)

+0

xin lỗi kiedys.I không thể đánh dấu câu trả lời của bạn trước đó để đưa ra 50 phiếu bầu cho bạn. Cảm ơn bạn rất nhiều vì câu trả lời của bạn. –

+0

Như tôi thấy trong các chủ đề khác: "Bạn có thể cung cấp càng nhiều tiền thưởng cho một câu hỏi như bạn muốn. Tuy nhiên, chỉ có một tiền thưởng có thể hoạt động trên một câu hỏi tại một thời điểm." http://meta.stackexchange.com/questions/16065/how-does-the-bounty-system-work – kiedysktos

+0

để bạn có thể thêm tiền thưởng vào câu hỏi một lần nữa tôi đoán – kiedysktos

Các vấn đề liên quan