Android 单元测试:如何模拟 Android 的上下文



我是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
}
}

我试过了

@Before
    public void setUp() throws Exception {
        provider = new Provider(mock(Context.class));
    }
    @Test
    public void DoSomethingTest() {
        final Data data = provider.getSomething();
        assertThat(data).isNotNull();
    }

但是我得到了以下错误: java.lang.RuntimeException: Stub! 在android.content.Context。(上下文.java:4) 在android.content.ContextWrapper。(上下文包装器.java:5)

你在Context-mock上称getPackageName();。要运行它,您必须模拟该方法,例如:

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

但这会使您的测试几乎毫无用处。但是考虑到这一点,这不是我会写的测试,因为(假设它按您的预期工作)它只是测试框架方法getPackageName()。在你的测试中,你应该测试你的代码,或者更具体地说,你的算法,而不是成功的方法调用。

相关内容

  • 没有找到相关文章

最新更新