首页 > 解决方案 > Android资源链接失败错误:属性'android:name'在标记必须是有效的 Java 类名

问题描述

好吧,我编写了一个测试代码,用于在单击按钮时检查是否打开新活动。我的代码看起来像

@Test
public void checkNewActivity() {

    onView(withId(R.id.button_open_new_activity)).perform(click());
    onView(withText("SecondActivity")).check(matches(isDisplayed()));

}

我还在清单中的两个活动中声明。

<activity
        android:name=".SecondActivity"
        android:label="@string/title_activity_second"
        android:theme="@style/AppTheme.NoActionBar">

    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

但在构建测试文件时遇到错误。错误

Android 资源链接失败 /Users/shihab/StudioProjects/AndroidTesting/app/build/intermediates/merged_manifests/debugAndroidTest/AndroidManifest.xml:9:错误:标签中的属性“android:name”必须是有效的 Java 类名。

标签: androidtestingandroid-espresso

解决方案


您是否在 gradle 文件中添加了 espresso 库?

如果没有,请按照以下步骤操作:

1-在 defaultConfig 添加 AndroidJUnitRunner:

defaultConfig {
        ...
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        ...
    }

2- 在依赖项中添加 espresso 库:

dependencies {
    ...
    //espresso
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
    androidTestImplementation 'androidx.test:runner:1.1.0'
    androidTestImplementation 'androidx.test:rules:1.1.0'
    ....
}

推荐阅读