向androidTest添加布局资源
我想将布局xml文件添加到我的向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来对原始应用程序运行
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: