【发布时间】:2016-01-25 19:49:53
【问题描述】:
我正在尝试进行一些单元测试,但我还没有真正确定运行程序或测试类。
最后,这是我正在验证它是否有效的方法:
public static void getData(final Context context, final Callback<MyObject> callback) {
Locale locale = context.getResources().getConfiguration().locale;
MyObjectService myService = new MyObjectService(getRequestHeaders(context), locale);
}
所以我需要一个包含资源、配置、语言环境和 SharedPreferences 的模拟上下文。
我尝试过 PowerMockito、AndroidTestCase、AndroidTestRunner、ApplicationTestCase。我所能得到的只是一个没有任何内容的模拟上下文,或模拟资源,但我不知道如何将它们添加到模拟上下文(基本上是重新制作一个上下文)。
这是我目前的最后一次尝试(虽然我尝试过更复杂的,但没有任何成功):
导入 com.myApp.android.app.shop.util.ServiceUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.modules.junit4.PowerMockRunner;
import android.content.Context;
@RunWith(PowerMockRunner.class)
public class TestLogin
{
@Test
public void test()
{
Context context = Mockito.mock(Context.class);
ServiceUtils.getData(context, dataCallback);
}
}
我得到的例外是来自 getData() 的 NPE,因为传递的上下文没有资源。
有什么建议吗?
【问题讨论】:
标签: java android unit-testing junit mockito