将布局资源添加到androidTest

Abd*_*lah 12 resources android android-resources android-testing

我想将layout xml文件添加到我的androidTest文件夹中,仅用于测试.

我添加了res/layout文件夹androidTest并尝试向其添加布局文件.但它给错误URI is not registeredxmlns:android="http://schemas.android.com/apk/res/android"

不知何故,该项目不会将其识别为有效的布局文件.

tas*_*iac 9

添加xml资源很棘手androidTest.

Android Instrumentation测试创建另一个APK以针对原始应用程序运行测试.虽然您可以Context从主应用程序访问您的和对象,但您无法修改应用程序生成的APK文件.

这意味着您无法从androidTest文件夹中的测试将其他布局xml添加到原始应用程序中.

解:

或者,

  • 你可以创建一个buildType被叫espresso.
  • 然后,创建一个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
}
Run Code Online (Sandbox Code Playgroud)

当您围绕该风格运行espresso测试时,您将可以访问您添加的其他布局xml文件.

应该是这样的:

在此输入图像描述


Sla*_*ava 8

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

有些问题可能会使您感到困惑。例如,自动补全并非经常都能很好地起作用,但是无论如何,它会建立并起作用。

最近我写了自定义的控制掩盖的EditText,所以我不想把任何活动的进库,但我想有一个活动检查的观点和我想从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
Run Code Online (Sandbox Code Playgroud)

所以,你可以看到,androidTest下有某种有自己的清单单独的项目,登记活动等等:-)我会分享更多的文件,但它只是一个项目,没有更多的,你总是可以看一下链接。

唯一的事情,我想提醒你,你应该准备的是Android的工作室会告诉你,你的项目包含错误,即使这不是真的:-)祝你好运!

准备好这AndroidStudio会告诉你,你的项目包含错误,即使这不是真的

  • 注意事项:您必须使用{module_package} .test.R类访问androidTest / res文件夹中的资源。 (5认同)