2012-11-18 32 views
10

Cách tốt nhất để kiểm tra đơn vị ứng dụng bằng cách sử dụng Google Drive API (Java client) là gì?Cách kiểm tra đơn vị ứng dụng bằng API Google Drive (máy khách Java)

Nó có vẻ như ứng dụng được viết dựa rất nhiều vào lớp Drive, nhưng thiếu một trong hai ...

  • tạo ra một mô hình thực sự mở rộng (trong đó, bản thân, có khả năng sẽ cần phải được kiểm tra), hoặc
  • viết bài kiểm tra tích hợp phụ thuộc vào dịch vụ Drive thực tế

... làm thế nào một ứng dụng như vậy có thể được kiểm tra?

Sử dụng khuôn khổ giả như Mockito là một chút tẻ nhạt với các API Drive (Java client), vì việc sử dụng của khách hàng Ổ Java dựa vào làm cho rất nhiều cuộc gọi xích (ví dụ, từ tài liệu):

Drive service = getDriveService(req, resp); 
service.files().get(fileId).execute(); 
+0

Tôi muốn nói rằng bạn nên thực hiện các thử nghiệm tích hợp trong trường hợp này vì bạn không thể dễ dàng giả lập thư viện. – Hiro2k

Trả lời

3

Nó không nên là tẻ nhạt trong Mockito trên thực tế, với sự giúp đỡ của cuống sâu:

Drive mockDrive = mock(Drive.class, RETURNS_DEEP_STUBS); 

.... 
// stubbing 
when(service.files().get(anyString()).execute()).thenReturn(something); 

// verify 
verify(service.files().get("Some Field ID").execute(); 

Tìm hiểu thêm từ documentation of Mockito

Sẽ tốt nếu bạn viết kiểm tra tích hợp để kiểm tra dịch vụ Drive thực tế, nhưng nó đơn giản là không thể thay thế thử nghiệm đơn vị.

+1

+1 nếu tôi muốn ngủ rất vui vẻ vào ban đêm, tôi sẽ có các bài kiểm tra đơn vị và tích hợp. –

+0

@AliAfshar nếu tôi muốn ngủ rất vui vẻ vào ban đêm, tôi sẽ có được một người vợ nóng bỏng (lol) –

+0

Vẫn không thể làm điều này, vì tôi nhận được 'ClassCastException (org.mockito.internal.creation.jmock.ClassImposterizer $ ClassWithSuperclassToWorkAroundCglibBug $$ EnhancerByMockitoWithCGLIB $ 4603175d không thể chuyển sang java.lang.Void) '. Tuy nhiên, tôi nghĩ câu trả lời của bạn thực sự chính xác và lỗi tôi thấy là lỗi trong Mockito. Cảm ơn! –

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