将布局资源添加到androidTest

时间:2016-11-21 07:46:03

标签: android resources android-resources android-testing

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

我将tickSubdivide文件夹添加到androidTest并尝试向其添加布局文件。但它为res/layout

提供了错误androidTest

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

3 个答案:

答案 0 :(得分:9)

将xml资源添加到androidTest非常棘手。

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

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

解决方案:

或者,

  • 您可以创建一个名为buildType的{​​{1}}。
  • 然后,创建一个espresso文件夹,您可以在其中放置要添加的任何Java或Android资源。
    • 您甚至可以在那里修改espresso
  • 然后,使用AndroidManifest

您的testBuildType 'espresso'应如下所示:

build.gradle

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

应该是这样的:

enter image description here

答案 1 :(得分:4)

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

有些问题可能让您感到困惑。例如,自动完成功能并不常见,但无论如何,它都可以构建并运行。

最近我写了custom control for masked 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

所以你可以看到,在androidTest下,有一个单独的项目,它有自己的清单,可以注册Activity等等:-)我会分享更多的文件,但它只是一个项目,没有更多,你总是可以查找链接。

我唯一要警告你的是,你应该准备好Android Studio会告诉你你的项目包含错误,即使这不是真的:-)祝你好运!

Be ready that AndroidStudio will show you that your project contains error even if that's not true

答案 2 :(得分:0)

无法发表评论,但想进一步添加到@Slava的答案中。如果一定有人可以将其添加为评论。

尝试使用该问题的可接受答案来抑制皮棉错误。 Android Studio Remove lint error