android - 测试导航 - IncompatibleClassChangeError -TestNavHostController 被声明为最终
问题描述
我正在尝试在我的示例应用程序中测试导航。我已经学习了谷歌导航测试教程。这是我的代码:
@RunWith(AndroidJUnit4::class)
@LargeTest
class NavigationTest {
@get:Rule
val activityRule = ActivityScenarioRule(MainActivity::class.java)
@Test
fun checkNavigation() {
// -------- crash --------
val navController =
TestNavHostController(ApplicationProvider.getApplicationContext())
// -----------------------
navController.setGraph(R.navigation.nav_graph)
val fragmentScenario = launchFragmentInContainer<FirstFragment>()
fragmentScenario.onFragment { frag ->
Navigation.setViewNavController(frag.requireView(), navController)
}
onView(withId(R.id.button_first)).perform(click())
assertEquals(navController.currentDestination?.id, R.id.SecondFragment)
}
}
我在第一行测试时崩溃了:
java.lang.IncompatibleClassChangeError: Superclass androidx.navigation.NavHostController of androidx.navigation.testing.TestNavHostController is declared final (declaration of 'androidx.navigation.testing.TestNavHostController' appears in /data/app/myApp.test-2vutApQLPNgS6e58B0_9tQ==/base.apk)
我与测试相关的 build.gradle 行:
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test:rules:1.3.0'
androidTestImplementation "androidx.navigation:navigation-testing:2.3.1"
androidTestImplementation "androidx.fragment:fragment-testing:1.2.5"
testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
我在两部手机上都试过了,两者都是一样的(三星安卓 8.0 和华为安卓 10)
我只看到了与 firebase 相关的崩溃,答案是更新我的 sdk-tools。我做到了,但没有运气。我找不到关于这个话题的任何答案。知道如何解决这个问题吗?
解决方案
再次浏览代码后,我注意到我使用了:
androidx.navigation:navigation-fragment-ktx:2.2.2
将库更新到 2.3.1 使崩溃消失。唷。
推荐阅读
- matlab - 在 Matlab 中绘制 q5、q50 和 q95
- dataframe - 将 CSV 文件读入 julia DataFrame
- java - 无法从云 Firestore 检索数据到列表视图 - Flutter
- firebase - Firestore 文件订单 | - 导致 RecyclerView 中的项目序列问题 |
- tensorflow - Huggingface 变压器错误:“从 transformers.trainer_utils 导入 get_last_checkpoint,is_main_process”
- reactjs - Can't perform a React state update on an unmounted component useEffect 错误
- c# - git Visual Studio 忽略文件夹和权限错误
- gradle - Gradle:任务配置方法之间的任何区别
- javascript - 在foreach中重新循环之前如何等待ajax调用结束?
- git - git@github.com: Permission denied_publickey fatal: 无法从远程仓库qq 读取