Gre*_* Ho 5 android unit-testing mocking mockito
我是Android单元测试的新手,想知道如果我想对下面的getSomething()进行单元测试,我可以如何模拟上下文.
非常感谢提前!
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
}
}
Run Code Online (Sandbox Code Playgroud)
我试过了
@Before
public void setUp() throws Exception {
provider = new Provider(mock(Context.class));
}
@Test
public void DoSomethingTest() {
final Data data = provider.getSomething();
assertThat(data).isNotNull();
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了以下错误:java.lang.RuntimeException:Stub!在Android.content.Context上的android.content.Context.(Context.java:4).(ContextWrapper.java:5)
你调用getPackageName();-mock Context。要使其运行,您必须模拟该方法,例如:
Mockito.when(mock.getPackageName()).thenReturn("myPackage");
Run Code Online (Sandbox Code Playgroud)
但这使您的测试几乎毫无用处。但想想这一点,这不是我要编写的测试,因为(假设它按您的预期工作)它只是测试框架方法getPackageName()。在测试中,您应该测试您的代码或更具体地测试您的算法,而不是方法的成功调用。
| 归档时间: |
|
| 查看次数: |
5767 次 |
| 最近记录: |