我正在使用Espresso測試Activity
,顯示使用ContentProvider
檢索到的數據。如何在使用Espresso測試Android活動時使用MockContentResolver?
我想模擬內容提供者使用MockContentProvider和MockContentResolver,但我不知道如何使活動方法getContentResolver()
返回一個模擬解析器。
(我可以執行測試之前插入數據,但我想知道是否可以使用,而不是一個模擬提供商)
更新: 我仍然不能使它工作,所以我包括一些代碼,試圖使其更清晰。
MyActivity.java
MyActivity extends AppCompatActivity {
...
private delete(String id) {
// The method getContentResolver() is what I want to mock when testing
getContentResolver().delete(
Contract.Item.makeUriForItem(id), null, null);
}
...
}
MyActivityTests.java
@RunWith(AndroidJUnit4.class)
@LargeTest
public class StockChartDetailsActivityTests {
@Rule
public ActivityTestRule<MyActivity> myActivityTestRule = new ActivityTestRule<MyActivity>(
MainActivity.class);
@Test
public void test() {
}
}
我不能讓建議使用Dagger2工作,因爲getContentResolver()
由機器人實現,我不能用@Inject
注入我自己的ContentResolver
。測試之前在數據庫
- 插入數據:
我可以使用不同的策略。
- 有另一層,如業務邏輯層,並將調用
getContentResolver()
移動到此層中的類,然後我可以注入(和模擬)業務邏輯類。
但是在使用這些策略之前,我想知道是否可以使用MockContentResolver
。
請在您的問題代碼示例。 –