【问题标题】:How to write junit test for after getting response in Android在Android中获得响应后如何编写junit测试
【发布时间】:2018-04-17 10:23:22
【问题描述】:
我有以下代码。我想为此方法编写junit 测试。
@Override
public void getSuccessData(Response response) {
if(response.getStatus().equalsIgnoreCase("success")){
BaseApplication.getInstance().setAccessToken(response.getToken().getAccessToken());
commonNavigate.navigateToHomeScreen((HomeActivity)view);
}
}
我如何为这种方法编写junit 测试用例。我对junit 很陌生。
【问题讨论】:
标签:
android
junit
testcase
【解决方案1】:
这(很可能)是您要测试的回调方法。
如果您想测试回调,您需要了解模拟。
在非常基本的术语中,模拟允许您创建一个虚假的源对象并在其上调用一些请求方法,然后验证是否已使用某些参数调用了特定的回调。了解可轻松与 Android Studio 集成的 Mockito:http://site.mockito.org/
其次,你的代码调用android-specific code:
BaseApplication.getInstance().setAccessToken(response.getToken().getAccessToken());
commonNavigate.navigateToHomeScreen((HomeActivity)view);
此代码依赖于 Context 对象。请阅读 Context 对象在 Android 中的含义以及它在 Application/Activity/View 类中的共享方式。 “navigateToHomeScreen”方法肯定需要一个上下文!
您可以使用假对象模拟 android 依赖项,或者您可以运行提供上下文和其他 Android 框架防御对象的 仪器测试。
总而言之 - 这些都是广泛而复杂的主题,您应该先对它们进行研究。
【解决方案2】:
如果您想测试方法,请使用 Mockito 框架。您需要模拟对象,以便您可以使用虚拟响应测试该方法。
mockito 请参考此链接
https://developer.android.com/training/testing/unit-testing/local-unit-tests.html#setup