简体   繁体   English

充气错误 class com.google.android.material.floatingactionbutton.FloatingActionButton 仪器测试

[英]Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton Instrumentation Test

The app works fine if I normally run the app but when I try to test it shows error here is the full log of the error.如果我正常运行该应用程序,该应用程序可以正常运行,但是当我尝试测试它时显示错误,这里是错误的完整日志。

java.lang.RuntimeException: android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton at androidx.test.runner.MonitoringInstrumentation.runOnMainSync(MonitoringInstrumentation.java:441) at androidx.test.core.app.ActivityScenario.onActivity(ActivityScenario.java:564) at androidx.fragment.app.testing.FragmentScenario.internalLaunch(FragmentScenario.java:300) at androidx.fragment.app.testing.FragmentScenario.launchInContainer(FragmentScenario.java:282) at androidx.fragment.app.testing.FragmentScenario.launchInContainer(FragmentScenario.Z93F725A07423FE1C8 java.lang.RuntimeException: android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton at androidx.test.runner.MonitoringInstrumentation.runOnMainSync (MonitoringInstrumentation.java:441) at androidx.test.core.app.ActivityScenario.onActivity(ActivityScenario.java:564) at androidx.fragment.app.testing.FragmentScenario.internalLaunch(FragmentScenario.java:300) at androidx.fragment. app.testing.FragmentScenario.launchInContainer(FragmentScenario.java:282) 在 androidx.fragment.app.testing.FragmentScenario.launchInContainer(FragmentScenario.Z93F725A07423FE1C8 89F448B33D21F46Z:262) at androidx.fragment.app.testing.FragmentScenario.launchInContainer(FragmentScenario.java:244) at androidx.fragment.app.testing.FragmentScenario.launchInContainer(FragmentScenario.java:228) at com.medium.todoapp.HomeFragmentInstrumentedTest.testRecyclerView(HomeFragmentInstrumentedTest.kt:14) at java.lang.reflect.Method.invoke(Native Method) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.Z93F725A07423FE1C889F448B33 89F448B33D21F46Z:262) at androidx.fragment.app.testing.FragmentScenario.launchInContainer(FragmentScenario.java:244) at androidx.fragment.app.testing.FragmentScenario.launchInContainer(FragmentScenario.java:228) at com.medium.todoapp.HomeFragmentInstrumentedTest .testRecyclerView(HomeFragmentInstrumentedTest.kt:14) at java.lang.reflect.Method.invoke(Native Method) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal. runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.Z93F725A07423FE1C889F448B33 D21F46Z:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.Parent D21F46Z:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner .runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners .ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.Parent Runner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:27) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(Par Runner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at androidx.test .ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:27 ) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(Par entRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56) at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:392) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java: entRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner .run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at androidx.test.internal. runner.TestExecutor.execute(TestExecutor.java:56) at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:392) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java: 1932) Caused by: android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:430) at ZC31B32364CE19CA8FCD1 1932) Caused by: android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class com.google.android.material.floatingactionbutton.FloatingActionButton Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect. ZC31B32364CE19CA8FCD1 处的 Constructor.newInstance(Constructor.java:430) 50A417ECCE58Z.view.LayoutInflater.createView(LayoutInflater.java:645) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.inflate(LayoutInflater.java:518) at android.view.LayoutInflater.inflate(LayoutInflater.java:426) at com.medium.todoapp.HomeFragment.onCreateView(HomeFragment.kt:16) at androidx.fragment.app.Fragment.performCrea 50A417ECCE58Z.view.LayoutInflater.createView(LayoutInflater.java:645) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) at android.view.LayoutInflater .rInflate(LayoutInflater.java:858) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.inflate(LayoutInflater.java:518) at android.view.LayoutInflater.inflate(LayoutInflater. java:426) 在 com.medium.todoapp.HomeFragment.onCreateView(HomeFragment.kt:16) 在 androidx.fragment.app.Fragment.performCrea teView(Fragment.java:2698) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447) at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992) at androidx.fragment.app.FragmentMa teView(Fragment.java:2698) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) at androidx.fragment.app.FragmentManager .moveToState(FragmentManager.java:1356) at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) at androidx.fragment.app. BackStackRecord.executeOps(BackStackRecord.java:447) at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992) at androidx.fragment.app .FragmentMa nager.removeRedundantOperationsAndExecute(FragmentManager.java:1947) at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1818) at androidx.fragment.app.BackStackRecord.commitNow(BackStackRecord.java:297) at androidx.fragment.app.testing.FragmentScenario$1.perform(FragmentScenario.java:317) at androidx.fragment.app.testing.FragmentScenario$1.perform(FragmentScenario.java:301) at androidx.test.core.app.ActivityScenario.lambda$onActivity$2$ActivityScenario(ActivityScenario.java:551) at androidx.test.core.app.ActivityScenario$$Lambda$4.run(Unknown Source) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428) at java.util.concurrent.FutureTask.run(FutureTask.Z93F725A07423FE1C889 nager.removeRedundantOperationsAndExecute(FragmentManager.java:1947) at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1818) at androidx.fragment.app.BackStackRecord.commitNow(BackStackRecord.java:297) at androidx.fragment.app .testing.FragmentScenario$1.perform(FragmentScenario.java:317) at androidx.fragment.app.testing.FragmentScenario$1.perform(FragmentScenario.java:301) at androidx.test.core.app.ActivityScenario.lambda$onActivity$2$ ActivityScenario(ActivityScenario.java:551) at androidx.test.core.app.ActivityScenario$$Lambda$4.run(Unknown Source) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428) at java. util.concurrent.FutureTask.run(FutureTask.Z93F725A07423FE1C889 F448B33D21F46Z:237) at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1950) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Cau F448B33D21F46Z:237) at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1950) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95 ) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android. internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Cau sed by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant). sed by:java.lang.IllegalArgumentException:此组件上的样式要求您的应用主题为 Theme.AppCompat(或后代)。 at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:243) at com.google.android.material.internal.ThemeEnforcement.checkAppCompatTheme(ThemeEnforcement.java:213) at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:148) at com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(ThemeEnforcement.java:76) at com.google.android.material.floatingactionbutton.FloatingActionButton.(FloatingActionButton.java:211) at com.google. at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:243) at com.google.android.material.internal.ThemeEnforcement.checkAppCompatTheme(ThemeEnforcement.java:213) at com.google.android.material .internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:148) at com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(ThemeEnforcement.java:76) at com.google.android.material.floatingactionbutton.FloatingActionButton.(FloatingActionButton. java:211) 在 com.google。 android.material.floatingactionbutton.FloatingActionButton.(FloatingActionButton.java:200)... 36 more Test running failed: Instrumentation run failed due to 'Process crashed.' android.material.floatingactionbutton.FloatingActionButton.(FloatingActionButton.java:200)... 36 更多测试运行失败:仪器运行因“进程崩溃”而失败。

Here is my XML file这是我的 XML 文件

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>

        <variable
            name="adapter"
            type="com.medium.todoapp.adapters.ToDoListAdapter" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".HomeFragment">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:adapter="@{adapter}"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
            tools:listitem="@layout/item_todo" />

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

Here is my TestFile这是我的测试文件

@RunWith(AndroidJUnit4::class)
class HomeFragmentInstrumentedTest {

    @Test
    fun testRecyclerView() {
        val homeScenario = launchInContainer(HomeFragment::class.java)
        homeScenario.onFragment {
            Assert.assertNotEquals(it.view?.findViewById(R.id.recyclerView), null)
        }
    }

    @Test
    fun testAddTodoButton() {
        val homeScenario = launchInContainer(HomeFragment::class.java)
        homeScenario.onFragment {
            Assert.assertNotEquals(it.view?.findViewById(R.id.addToDo), null)
        }
    }
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        bindings = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false)
        bindings?.apply {
            this.adapter = ToDoListAdapter()
        }
        return bindings?.root
    }

Build.gradle Build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"

    defaultConfig {
        applicationId "com.medium.todoapp"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    dataBinding {
        enabled = true
    }

    kapt {
        generateStubs = true
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // AndroidX
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core-ktx:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'

    // Test
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    // Tests
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    androidTestImplementation 'androidx.test:rules:1.2.0'

    // Mockito
    androidTestImplementation "org.mockito:mockito-core:2.24.5"
    androidTestImplementation "org.mockito:mockito-android:2.24.5"

    // FragmentScenario
    debugImplementation "org.jetbrains.kotlin:kotlin-stdlib:1.3.72"
    debugImplementation ("androidx.fragment:fragment-testing:1.2.4") {
        // required, while there is no version 1.2.0 yet.
        exclude group: "androidx.test", module: "core"
    }

    // Navigation Architecture Component
    implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
    implementation 'androidx.navigation:navigation-ui-ktx:2.2.2'
}

Try to replace launchInContainer(HomeFragment::class.java) with:尝试将launchInContainer(HomeFragment::class.java)替换为:

launchInContainer(HomeFragment::class.java, null, R.style.AppTheme, null)

R.style.AppTheme has to inherit from Theme.AppCompat R.style.AppTheme必须继承自Theme.AppCompat

  1. Open the build.gradle file for your application.打开应用程序的 build.gradle 文件。

  2. Make sure that the repositories section includes Google's Maven Repository google().确保存储库部分包含 Google 的 Maven 存储库 google()。 For example:例如:

     repositories { google() jcenter() }

3.Add the library to the dependencies section: 3.将库添加到依赖项部分:

    dependencies {
    // ...
    implementation 'com.google.android.material:material:<version>'
    // ...
  }

more info link更多信息链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 充气错误 class com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton - Error inflating class com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton 错误膨胀类FloatingActionButton - Error inflating class FloatingActionButton 在Android中输入类android.support.design.widget.FloatingActionButton时出错 - Error inflating class android.support.design.widget.FloatingActionButton in Android 错误膨胀类android.support.design.widget.FloatingActionButton - android - Error inflating class android.support.design.widget.FloatingActionButton - android 错误膨胀类 android.support.design.widget.FloatingActionButton - Error inflating class android.support.design.widget.FloatingActionButton 使用注解使FloatingActionButton膨胀时出错 - Error inflating FloatingActionButton with annotation 在膨胀FloatingActionButton的布局时出错:NoSuchMethodException - Error inflating layout of FloatingActionButton : NoSuchMethodException 在FragmentScenario测试中夸大类com.google.android.material.tabs.TabLayout时出错 - Error inflating class com.google.android.material.tabs.TabLayout inside FragmentScenario test 错误:充气 class com.google.android.material.textfield.TextInputLayout - Error: Inflating class com.google.android.material.textfield.TextInputLayout 充气时出错 class com.google.android.material.button.MaterialButton - Error inflating class com.google.android.material.button.MaterialButton
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM