2015-04-13 14 views
5

Tôi mới làm thử nghiệm đơn vị Android và đã tự hỏi làm thế nào tôi có thể thử bối cảnh nếu tôi muốn đơn vị kiểm tra getSomething() bên dưới.Thử nghiệm đơn vị Android: Cách thử thách bối cảnh của Android

Cảm ơn rất nhiều trước!

public class Provider { 
private final String packageName; 
public Provider(Context context) { 
    packageName = context.getPackageName(); 
} 


public Data getSomething() { 
    return get(packageName); 
} 

private Data get(String packageName) { 
// return something here based on the packageName 

} 

} 

tôi đã cố gắng

@Before 
    public void setUp() throws Exception { 
     provider = new Provider(mock(Context.class)); 
    } 

    @Test 
    public void DoSomethingTest() { 
     final Data data = provider.getSomething(); 
     assertThat(data).isNotNull(); 
    } 

Nhưng tôi đã nhận lỗi dưới đây: java.lang.RuntimeException: Stub! tại android.content.Context. (Context.java:4) tại android.content.ContextWrapper. (ContextWrapper.java:5)

+0

Đây không phải là bài kiểm tra đơn vị UI nhưng là bài kiểm tra chức năng –

Trả lời

2

Bạn gọi getPackageName(); trên Context -mock. Để thực hiện điều này, bạn phải thử phương pháp như:

Mockito.when(mock.getPackageName()).thenReturn("myPackage"); 

Nhưng điều này làm cho thử nghiệm của bạn trở nên vô dụng. Nhưng suy nghĩ về điều này, đây không phải là một thử nghiệm mà tôi sẽ viết bởi vì (giả sử nó hoạt động như bạn mong đợi nó) nó chỉ kiểm tra phương pháp khung getPackageName(). Trong các thử nghiệm của bạn, bạn nên kiểm tra mã của bạn hoặc để cụ thể hơn các thuật toán của bạn và không phải là cuộc gọi thành công của phương pháp.

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