向androidTest添加布局资源

向androidTest添加布局资源,android,resources,android-resources,android-testing,Android,Resources,Android Resources,Android Testing,我想将布局xml文件添加到我的androidTest文件夹中,以便仅用于测试 我将res/layout文件夹添加到androidTest中,并尝试向其中添加布局文件。但它给出了错误URI未注册xmlns:android=”http://schemas.android.com/apk/res/android“ 不知何故,项目无法将其识别为有效的布局文件 在androidTest中添加xml资源是很棘手的 Android Instrumentation tests创建另一个APK来对原始应用程序运行

我想将布局xml文件添加到我的
androidTest
文件夹中,以便仅用于测试

我将
res/layout
文件夹添加到
androidTest
中,并尝试向其中添加布局文件。但它给出了错误
URI未注册
xmlns:android=”http://schemas.android.com/apk/res/android“


不知何故,项目无法将其识别为有效的布局文件

androidTest
中添加xml资源是很棘手的

Android Instrumentation tests创建另一个APK来对原始应用程序运行测试。尽管您可以从主应用程序访问
上下文和对象,但无法修改应用程序生成的APK文件

这意味着您不能从
androidTest
文件夹中的测试中向原始应用程序添加额外的布局xml

解决方案: 或者

  • 您可以创建名为
    espresso
    buildType
  • 然后,创建一个
    espresso
    文件夹,您可以在其中放置任何想要添加的java或Android资源。
    • 您甚至可以在那里修改您的
      AndroidManifest
  • 然后,使用testBuildType“espresso”
您的
build.gradle
应该如下所示:

android {
  testBuildType 'espresso'

  buildTypes {
    espresso.initWith(buildTypes.release)
  }
}

dependencies {
  espressoCompile 'somedependency' // you can even have special dependencies
}
当您围绕这种口味运行浓缩咖啡测试时,您将可以访问添加的其他布局xml文件

应该是这样的:

android {
  testBuildType 'espresso'

  buildTypes {
    espresso.initWith(buildTypes.release)
  }
}

dependencies {
  espressoCompile 'somedependency' // you can even have special dependencies
}

那很容易!通常,您应该将资源放在
src/androidTest/res
文件夹下。就是这样!然后您可以在
src/androidTest/java
文件中使用它。是的,您不能在生产APK中使用测试布局,但是您可以在测试APK中使用测试布局

有些问题可能会让你困惑。例如,自动完成工作得很好,但并不经常如此,但无论如何,它构建并工作得很好

最近我写了一篇文章,所以我不想将任何活动放入库中,但我确实希望有一个活动来检查视图,并且我确实希望从XML将其膨胀。您可以在github页面上看到整个代码,以下是一些关键时刻:

$ tree androidTest/
androidTest/
├── AndroidManifest.xml
├── java
│   └── ru
│       └── egslava
│           └── lib_phone
│               ├── MainActivityTest.java
│               ├── TestActivity.java
│               └── actions
│                   ├── HintViewAction.java
│                   ├── KeepHintViewAction.java
│                   └── SetTextViewAction.java
└── res
    ├── layout
    │   └── activity_main.xml
    └── values
        └── styles.xml
所以你可以看到,在androidTest下有一个单独的项目,它有自己的清单来注册活动,等等:-)我会共享更多的文件,但它只是一个项目,没有更多,你总是可以查找链接

我唯一想提醒你的是,你应该准备好,Android Studio将向你显示你的项目包含错误,即使这不是真的:-)祝你好运


无法发表评论,但想进一步补充@Slava的答案。如果有人可以添加它作为一个评论,无论如何

尝试使用此问题的已接受答案抑制lint错误。

tasomaniac的回答很好。最好使用非调试的testBuildType,这样可以避免夸大您的风格集。注意:您必须使用
{module\u package}.test.R
类来访问
androidTest/res
文件夹中的资源。也请检查此答案,您必须进行
import.test.R: