【问题标题】:Android unit test/test.runner - access to Application objectAndroid unit test/test.runner - 访问Application对象
【发布时间】:2011-03-27 18:20:11
【问题描述】:

我正在使用 android.test.runner 库和 AndroidTestCase 等来创建一些单元测试。我发现它很有用,但一项测试需要访问应用程序对象。通常我只是从活动上下文中得到它,例如

AppState appState = ((AppState) myActivity.getApplicationContext());

但是,单元测试位于扩展 AndroidTextCase 的类中,据我所知,没有可用的 getApplicationContext。有一个getContext,但我不清楚这是否是我想要的。最好的行动方案是什么?

【问题讨论】:

    标签: android unit-testing junit android-context


    【解决方案1】:

    您是在测试您的 AppState 对象,还是在尝试测试其他依赖它的东西? 如果您没有在此实例中测试 AppState,您是否可以使用 Mockito 等工具来模拟 AppState 对象以进行测试。

    【讨论】:

    • 我会做类似的事情吗:1)将 mokito 的 jar 添加到项目中 2)在我的单元测试中导入一些 mockito 3)类似“AppState appState = mock(AppState.class)”的代码
    • 将 mockito jar 添加到您的测试项目中,我更喜欢静态导入: import static org.mockito.Matchers.*;导入静态 org.mockito.Mockito.*;然后,是的,AppState appState = mock(AppState.class)。然后你可以做一些简洁的事情,比如 when(appState.getSomething.thenReturn("something"); 伪造测试数据
    • 我在输入评论后看到 :)
    • 如果有用,我会把它放在答案文本中,而不是评论中
    • 废话 - 发现这个 stackoverflow.com/questions/522312/… 表明你不能使用 Mockito,但它还有其他有用的建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多