2013-07-30 25 views
8

Tôi đang viết bài kiểm tra đơn vị với Robolectric. Thiết lập trông giống như thế nàyrobolectric 2 - tạo hoạt động được thử nghiệm với mục đích

@RunWith(RobolectricTestRunner.class) 
public class MiAirlineActivityTest { 
    @Before 
    public void setUpFor() { 
     Intent intent = new Intent(HOW_TO_PASS_CONTEXT_HERE, MiAirlineActivity.class); 
     intent.putExtra(EMPLOYEEID_EXTRA, "username"); 

     miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class) 
           .withIntent(intent).start().get(); 
    } 
} 

Cách chuyển ngữ cảnh trong khi tạo mục đích mới. Tôi đã làm theo ví dụ từ câu hỏi this.

Có @ David nói,

"... i needed to give a Context and the class of the Activity it was being sent to"

Làm thế nào chính xác tôi có thể làm điều đó?

Lưu ý: Vui lòng không đánh dấu nó là trùng lặp với câu hỏi được liên kết ở trên. Tôi đang hỏi một câu hỏi mới vì tôi không thể thêm bình luận ở đó.

+0

thể trùng lặp của [robolectric 2 - tạo hoạt động với mục đích] (http://stackoverflow.com/questions/17195761/robolectric-2-create-activity-with-intent) – tir38

Trả lời

0
miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class).create().get(); 
Intent intent = new Intent(); 
intent.putExtra(EMPLOYEEID_EXTRA, "username"); 
miAirlineActivity.setIntent(intent); 
miAirlineActivity.onCreate(new Bundle()); 

này sẽ khởi động hoạt động của bạn với mục đích mong muốn

+0

nhờ @ user2483079 , nhưng giải pháp đưa ra lỗi: 'testSetBasketForExistingSeatWhoHasDeferredPurchases (com.miairline.activities.MiAirlineActivityTest) Thời gian trôi qua: 1.375 giây <<< LRI! java.lang.NullPointerException \t tại com.miairline.activities.MiAirlineActivity.onCreate (MiAirlineActivity.java WEBC40) ' đây là điểm mà mã được gọi là getIntent() và ý định là rỗng. – vikas

8

Hãy thử điều này

Intent intent = new Intent(Robolectric.getShadowApplication().getApplicationContext(), 
       MiAirlineActivity.class); 
2

Xây dựng hoạt động của bạn với một ý định

Intent intent = new Intent(HOW_TO_PASS_CONTEXT_HERE,MiAirlineActivity.class); 
intent.putExtra(EMPLOYEEID_EXTRA, "username"); 
iAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class).withIntent(intent).create().get(); 

nhìn vào các tài liệu roboelectric here

1

Intent intent = new Intent (ShadowApplication.getInstance(). GetApplicationContext(), Activity.class);

+2

Vui lòng định dạng mã của bạn và thêm giải thích để giúp giải thích lợi ích của câu trả lời này so với các câu trả lời khác. – OhBeWise

0

Không cần tạo ngữ cảnh và nhắm mục tiêu Lớp hoạt động bằng cách sử dụng hàm tạo. Hãy thử điều này:

@Before 
public void setUpFor() { 
    Intent intent = new Intent(); 
    intent.putExtra(EMPLOYEEID_EXTRA, "username"); 

    miAirlineActivity = Robolectric.buildActivity(MiAirlineActivity.class) 
          .withIntent(intent).start().get(); 
} 
Các vấn đề liên quan