我正在尝试做一些单元测试,并且我还没有真正解决跑步者或测试课程。如何从模拟环境获取语言环境
最后,这是我验证它的工作方法:
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,因为传递的上下文没有资源。
有什么建议吗?
谢谢您的回答每次。到目前为止,我已经能够进行基本测试的robolectric工作,但是我一直无法验证回调的价值。你会知道该怎么做吗? – TooManyEduardos