Tôi có một thư viện Java sử dụng một vài thứ từ API Android. Tôi muốn sử dụng Mockito để viết các bài kiểm tra đơn vị cho thư viện này.Android: Đơn vị kiểm tra các ứng dụng Android với Robolectric và Mockito
Có cách nào tôi có thể thực hiện việc này không?
Mockito không chơi đẹp trên Dalvik VM, xem bài này: Using Mockito with Android virtual machine
UPDATE:
Kể từ bài này, tôi đã phát hiện ra Robolectric, và tôi đã có cơ hội để làm việc trong số các Lab của Pivotal và đóng góp một phần nhỏ vào thư viện này. Tôi khuyên bạn nên sử dụng tính năng này trên khung kiểm tra Android/mockito. Ngoài ra, bạn được tự do sử dụng Robolectric AND Mockito, nhưng các đối tượng bóng trong Robolectric làm cho Mockito không cần thiết cho hầu hết các trường hợp sử dụng.
Vấn đề với việc thử nghiệm đơn vị Android là thư viện Android mà bạn xây dựng trên mọi phương thức đều được đưa ra để ném một ngoại lệ stub hoặc trả về null. Nếu bạn muốn thử nghiệm ứng dụng của mình và muốn bất kỳ hành vi Android nào bạn không may mắn, trừ khi bạn sử dụng Robolectric để viết lại mã byte khi các lớp tải và tiêm đối tượng bóng mô phỏng hành vi.
UPDATE 2:
Nó được một lúc và mọi thứ đã thay đổi. Nhiều lớp Shadow trong Robolectric đã được thay thế bằng các lớp Android thực sự. Các lọ thực sự của Android hiện đang được sử dụng và Robolectric chỉ tải các lớp Shadow cho một tập hợp nhỏ hơn nhiều. Điều này thậm chí còn nhiều hơn một lý do để sử dụng Robolectric cho thử nghiệm Android của bạn.
Tôi sử dụng Spy-xây dựng từ Mockito kết hợp với các nhà xây dựng được cung cấp bởi Robolectric. Bằng cách đó tôi có thể làm một phần chế nhạo các thành phần Android khi cần thiết, ví dụ: FooActivity foo = spy (Robolectric.buildActivity (FooActivity.class) .get()); doReturn (mock) .when (foo) .getSomething(); – Alix