- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
运行单元测试代码时出现以下错误。
Caused by: java.lang.IllegalStateException: Hilt Fragments must be attached to an @AndroidEntryPoint Activity. Found: class androidx.fragment.app.testing.FragmentScenario$EmptyFragmentActivity
at dagger.hilt.internal.Preconditions.checkState(Preconditions.java:83)
at dagger.hilt.android.internal.managers.FragmentComponentManager.createComponent(FragmentComponentManager.java:75)
at dagger.hilt.android.internal.managers.FragmentComponentManager.generatedComponent(FragmentComponentManager.java:63)
at com.zhixin.wedeep.homepage.ui.Hilt_HomePage.generatedComponent(Hilt_HomePage.java:70)
at com.zhixin.wedeep.homepage.ui.Hilt_HomePage.inject(Hilt_HomePage.java:89)
at com.zhixin.wedeep.homepage.ui.Hilt_HomePage.initializeComponentContext(Hilt_HomePage.java:53)
at com.zhixin.wedeep.homepage.ui.Hilt_HomePage.onAttach(Hilt_HomePage.java:45)
at androidx.fragment.app.Fragment.onAttach(Fragment.java:1602)
at com.zhixin.wedeep.homepage.ui.Hilt_HomePage.onAttach(Hilt_HomePage.java:35)
at com.zhixin.wedeep.homepage.ui.HomePage.onAttach(HomePage.kt:281)
这是我的测试代码。
@HiltAndroidTest
@UninstallModules(HomePageDataModule::class)
@RunWith(AndroidJUnit4::class)
@LargeTest
class TestHomePageFragment {
private val c = Composition("cyrus", "background", "description", "downloadUrl", "1000", "url", "1", true, "100", 100, "100", "test", "title", "1", "100", "cover", ArrayList(), "ONCE", null)
@Inject
lateinit var cpd: CompositionDao
@get:Rule
var hiltRule = HiltAndroidRule(this)
@Before
fun init() {
hiltRule.inject()
Util.RETROFIT
Util.enqueueResponse("mainpage.json")
cpd.createComposition(c)
cpd.createBrowseRecord(BrowseRecord(c.id, System.currentTimeMillis()))
val s = launchFragment<HomePage>()
s.onFragment {
IdlingRegistry.getInstance().register(it.mIdleResource)
}
/* dataBindingIdlingResourceRul = DataBindingIdlingResourceRule(s)
dataBindingIdlingResourceRul.starting(null)*/
}
@Test
fun testDataInitial() {
onView(ViewMatchers.withId(R.id.recycler_view_preview_data))
.perform(RecyclerViewActions.scrollToPosition<RecyclerView.ViewHolder>(1))
}
@After
fun finish(){
}
}
对这个问题有任何想法吗?
最佳答案
如 Hilt guide 中所述,“测试”部分:
Warning: Hilt does not currently support FragmentScenario because there is no way to specify an activity class, and Hilt requires a Hilt fragment to be contained in a Hilt activity. One workaround for this is to launch a Hilt activity and then attach your fragment.
@AndroidEntryPoint
注释.因为 FragmentScenario 使用 EmptyFragmentActivity 来保存正在测试的底层 Fragment,所以目前没有办法将 Hilt 与 FragmentScenario 集成。一种解决方法是启动一个 Activity ,然后将 fragment 附加到它。
关于android - Hilt Fragments 必须附加到 @AndroidEntryPoint Activity。找到 : class androidx. fragment.app.testing.FragmentScenario$EmptyFragmentActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63189892/
我在BottomSheetDialogFragmet() 中使用ViewModel,所以我必须用@AndroidEntryPoint 标记我的BottomSheet。 @AndroidEntryPoi
所以我的问题是,当我开始使用 Hilt 时,我们是否需要使用 @AndroidEntryPoint 注释标记所有 Activity ,或者我们是否可以创建一个 BaseActivity 并将其扩展到
当我通过 Room 在 android 中使用 Hilt 时我得到了这个错误。 完整的日志在这里: home/someone/Desktop/Calculator/app/build/tmp/kapt
是否必须在所有依赖类上添加 @AndroidEntryPoint 注释,例如依赖于 Activity 的 fragment 。是否有任何替代解决方案可以克服此异常? 最佳答案 只需添加 @Androi
我正在尝试使用 viewmodel 并观察 DialogFragment 中的数据,我也在注入(inject) ViewModel,同时实现代码出错。 PFB 我的代码 fragment 。并帮助我找
我遵循了很多教程/文章和 googles architecture sample 无论我尝试什么,我都会收到一条错误消息,提示我需要将 Fragment 附加到带@AndroidEntryPoint
运行单元测试代码时出现以下错误。 Caused by: java.lang.IllegalStateException: Hilt Fragments must be attached to an @
我是一名优秀的程序员,十分优秀!