Câu hỏi đặt ra là, bạn là thử nghiệm đơn vị hay thử nghiệm tích hợp?
Nếu bạn là đơn vị thử nghiệm, tôi sẽ đề nghị sử dụng mocks theo cách cũ, bằng cách sử dụng một setter và cố gắng để kiểm tra mã Java mà không có khuôn khổ tiêm phụ thuộc có liên quan. Điều này sẽ kiểm tra lớp học của bạn trong sự cô lập và sidesteps rất nhiều phức tạp.
Những gì tôi có nghĩa là:
public class Test{
ClassInTest inTest;
MyInterface myInterface;
@Before
public void setup(){
inTest = new ClassInTest();
//or your favorite mocking frameowrk
myInterface = EasyMock.createMock(MyInterface.class);
inTest.setMyInterface(myInterface);
}
@Test
public void testMethod(){
//...mocking test code
}
}
Tất nhiên, thử nghiệm hoạt động Android (và phần mở rộng khác của Android) là khó khăn vì sự ngoại lệ ném cuống và các lớp học chính thức/phương pháp. Đây là nơi mà Robolectric có ích (và được khuyến nghị) cho việc khởi tạo/che giấu API Android.
Nếu bạn là thử nghiệm tích hợp, bạn có thể muốn thực hiện một cách tiếp cận khác. Cá nhân, tôi sẽ cố gắng không để giả lập trong các bài kiểm tra tích hợp như tôi cố gắng để kiểm tra các ứng dụng như nó sẽ chạy trong sản xuất. Tuy nhiên, nếu bạn thực sự muốn giả lập, bạn có thể sử dụng phương pháp tương tự để thử nghiệm đơn vị và giới thiệu mô hình sau khi bạn đứng lên lớp Hoạt động đã tạo. Đáng chú ý, bạn có thể thực hiện các bài kiểm tra tích hợp trực tiếp trên phần cứng bằng cách sử dụng các khung công tác như Robotium.
Thêm vào câu hỏi của bạn, tôi không biết bất kỳ cơ sở nào của AndroidAnnotations dành riêng cho việc tiêm Mocks hoặc giới thiệu Mocks vào cây phụ thuộc được tiêm của ứng dụng.
Nguồn
2012-05-14 16:14:05
Bạn đang tìm cách kiểm tra lớp học của mình hoặc lớp học được tạo bởi AndroidAnnotations? –
Tôi muốn kiểm tra một lớp học mà tôi viết. Tôi muốn tiêm mocks vào lớp mà tôi viết cho mã thử nghiệm, và tiêm các đối tượng "thực" cho sản xuất. – apollodude217