android - 用于 UI 测试的 Hilt 依赖注入说“HiltAndroidRule”没有被添加,但它是
问题描述
我正在尝试使用 Hilt 进行依赖注入,但它给出了错误java.lang.IllegalStateException: The component was not created. Check that you have added the HiltAndroidRule.
The HiltAndroidRule is added 虽然:
@RunWith(AndroidJUnit4.class)
@UninstallModules(ItemsModule.class)
@HiltAndroidTest
public class SelectItemActivityTest {
@Rule
public HiltAndroidRule hiltRule = new HiltAndroidRule(this);
@Before
public void init() {
hiltRule.inject();
}
@BindValue
List<Item> items = getItems();
List<Item> getItems() {
List<Item> items = new ArrayList<>();
items.add(new Item(1, "Item1", "", true, true, true));;
items.add(new Item(2, "Item2", "", true, true, true));;
items.add(new Item(3, "Item3", "", true, true, true));;
return items;
}
@Rule
public ActivityTestRule<SelectItemActivity> mActivityRule =
new ActivityTestRule<>(SelectItemActivity.class);
@Test
public void text_isDisplayed() {
onView(withText("Item1")).check(matches(isDisplayed()));
}
}
我也尝试在类中添加一个 ItemsModule ,但结果相同。
解决方案
您必须使用RuleChain
或通过将order
参数应用于Rule
注释来包装它。
这里详细解释:https ://developer.android.com/training/dependency-injection/hilt-testing#multiple-testrules
推荐阅读
- ios - 用动画水平移动 UIImage
- php - Laravel:如何使用查询生成器获取列中的对象
- android - 计时器减少时间以分钟和秒显示在文本视图中
- python - 如何将变量分配给for循环中的if语句?
- c# - 从位图流 C# 中计算 MD5 的问题
- ios - 如何在 SwiftUI 的另一个视图/结构中调用 func?
- apiconnect-test-monitor - 指标视图中获取和延迟之间的差异
- vue.js - vuejs中的axios发布文件返回null
- stanford-nlp - 拆分csv文件的问题
- git - 无法访问 macos 上的 bitbucket 存储库