2010-10-22 37 views
8

Tôi hiện đang xây dựng một ứng dụng trong Android và sử dụng Robotium để thực hiện các kiểm tra chức năng (Bằng cách này, đừng sử dụng Robotium trên bất kỳ thứ gì ít hơn Android 1.6, quá khó khăn).Chú thích thử nghiệm Android với Robotium

Một số thử nghiệm này có xu hướng ngẫu nhiên không thành công, chủ yếu là Robotium thiếu trường văn bản hoặc thời gian chờ, không đọc văn bản. Tôi đang cố gắng sử dụng chú thích @FlakyTest, vì vậy chúng sẽ chạy hai hoặc ba lần trước khi phát ra lỗi kiểm tra không thành công. Tuy nhiên, chú thích không hoạt động, các thử nghiệm không chạy lại sau khi thất bại.

Sau đây là cách tôi đang sử dụng chú thích:

public class ClassName extends ActivityInstrumentationTestCase2<HomeActivity>{ 

     @LargeTest 
     @FlakyTest(tolerance=3) 
     public void testMethod(){ 

     //Here I run my roboitium scripts. 

     } 
} 

Sau đó, tôi chạy nó từ dòng lệnh:

adb shell pm cụ -w com.jayway.test/android.test .InstrumentationTestRunner

Cả nhật thực lẫn thực thi dòng lệnh đều không tính đến chú thích kiểm tra không ổn định. Có ai thấy lỗi với cách tôi đang cố gắng áp dụng @FlakyTest không?

+1

bạn có thể muốn hỏi điều này trong danh sách gửi thư robot .. –

Trả lời

3

Tôi không thể thấy bất kỳ sự cố nào khi bạn sử dụng chú thích @FlakyTest.

Tôi đặt cùng một trường hợp thử nghiệm nhanh để kiểm tra @FlakyTest và Robotium (v2.2):

public class FlakyTestCase extends ActivityInstrumentationTestCase2<Main> { 

private static int count = 0; 
private Solo solo; 

public FlakyTestCase() { 
    super("com.stackoverflow.example", Main.class); 
} 

@Override 
public void setUp() throws Exception { 
    solo = new Solo(getInstrumentation(), getActivity()); 
} 

@LargeTest 
@FlakyTest(tolerance=3) 
public void testFlaky(){ 
    Log.e("FlakeyTestCase", "Execution Count:" + ++count); 

    solo.assertCurrentActivity(null,Main.class); 
    solo.clickOnText("Doesn't Exist"); 

    Log.e("FlakeyTestCase", "Shouldn't make it here"); 
} 
} 

LogCat thấy thông báo sau:

Execution Count: 1 
Execution Count: 2 
Execution Count: 3 

Vì vậy, các @FlakyTest chú thích được chắc chắn là được viện dẫn. Sự thất bại (cuối cùng) của thử nghiệm được hiển thị là:

junit.framework.AssertionFailedError: The text: Doesn't Exist is not found! 

Và thông báo "Shouldn't make it here" chưa bao giờ được ghi lại.

Vì vậy, như xa như tôi có thể thấy, không có vấn đề với cách bạn đã tuyên bố chú thích của bạn hoặc bất kỳ vấn đề với @FlakyTest và Robotium, v2.2 anyway.

Có thể có vấn đề với một phần khác của mã thử nghiệm của bạn?

+0

Bạn nên sử dụng phiên bản mới nhất của Robotium (5.1) – Renas

-3

Thêm phần này vào mã của bạn:

import android.util.Log; 
+0

Câu trả lời này có đúng cho câu hỏi đúng không ?? –

3

Nói chung, khi viết bài kiểm tra dành cho Android (có hoặc không có Robotium), bạn cần phải thận trọng hơn. Bạn không thể chỉ nói "là điều này có thể nhìn thấy". Bạn cần phải bọc mọi thứ trong một chu kỳ "chờ đợi", vì vậy sẽ nói "chờ cho điều này được hiển thị". Điều này đặc biệt là một vấn đề khi chạy trong bộ giả lập, bởi vì đôi khi mọi thứ mất nhiều thời gian mà không có bất kỳ lý do chính đáng nào. Nếu không có chu kỳ chờ đợi, bạn sẽ không bao giờ có một chạy nhất quán. Chúng tôi có vài trăm bài kiểm tra và chúng tôi chưa bao giờ cần sử dụng chú thích FlakyTest.

0

Robotium thiếu một trường văn bản, hoặc thời gian ra, không đọc văn bản có nghĩa Chúng ta phải kiểm tra rõ ràng nếu văn bản hoặc bất kỳ tồn tại trên màn hình sau đó chỉ cần phải thực hiện những hành động như

if(solo.searchText("Doesn't Exist", true){ 
solo.clickOnText("Doesn't Exist"); 
} 

tương tự nếu bất kỳ thành phần nào như nút hoặc các thành phần khác mà chúng ta có thể đạt được điều này bằng logic trên.

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