我正在嘗試做一些單元測試,並且我還沒有真正解決跑步者或測試課程。如何從模擬環境獲取語言環境
最後,這是我驗證它的工作方法:
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