launchFragmentInContainer

launchFragmentInContainer

在编写使用launchFragmentInContainer的简单测试时,出现以下错误消息:

java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.myapp.appname.debug/androidx.fragment.app.testing.FragmentScenario$EmptyFragmentActivity (has extras) }

基本测试类是:
class OneFragmentTest {

    @Test
    fun testOneFragmentState_checkTitleText() {
        val args = Bundle().apply {
            putString("dummyKey", "dummyValue")
        }
        launchFragmentInContainer<OneFragment>(args)

        onView(withId(R.id.tv_title)).check(matches(withText("title here")))
    }
}

我尝试使用以下命令更新AndroidManifest.xml:

<instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.myapp.appname" />

但是标签instrumentation似乎有效,但是值用红色书写,所以我认为targetPackagename出了点问题。

如何摆脱这个错误,并使用launchFragmentInContainer在OneFragment上运行一个简单的测试?

最佳答案

该错误与我在Gradle上导入依赖项的方式有关。

前:

androidTestImplementation("androidx.fragment:fragment-testing:1.1.0-beta01")
implementation("androidx.fragment:fragment-ktx:1.1.0-beta01")
androidTestImplementation("androidx.test:core:1.2.0")
androidTestImplementation("androidx.test:rules:1.2.0")
androidTestImplementation("androidx.test:runner:1.2.0")

后:
debugImplementation("androidx.fragment:fragment-testing:1.1.0-beta01")
debugImplementation("androidx.fragment:fragment-ktx:1.1.0-beta01")
debugImplementation("androidx.test:core:1.2.0")
debugImplementation("androidx.test:rules:1.2.0")
debugImplementation("androidx.test:runner:1.2.0")

androidTestImplementation更改为debugImplementation,它解决了该问题。编译并运行,结果为绿色测试。

关于android - launchFragmentInContainer无法解析Android中的 Activity ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56558775/

10-10 02:15