【问题标题】:gradle: compile android junit test apk filegradle:编译android junit测试apk文件
【发布时间】:2013-08-23 07:08:47
【问题描述】:

我可以使用 gradle 脚本编译 Android JUnit 测试 apk 文件吗?现在我的测试课是:

    public class main extends ActivityInstrumentationTestCase2<LoginWindow> {
        public main() {
        super("com.tecomgroup.handifox", LoginWindow.class);
        }
        ...
    }

并且 gradle 说他找不到类 LoginWindow。我应该将 LoginWindow.java 添加到依赖项 {} 块吗?这样的测试会起作用吗?或者可能有另一种编译测试apk文件的方法?

【问题讨论】:

  • Gradle Android 插件中的项目结构与 Ant Android 结构不同。测试在 src/test/java 目录中的项目中,而不是在另一个项目中。你在另一个项目中有测试吗?
  • 我的应用程序和 junit 测试是两个不同的项目(如果我正确理解你的问题)
  • @user2172741 然后你必须将该项目的 jar 添加为 compiletest 依赖项。

标签: java android junit gradle


【解决方案1】:

使用 Gradle Android 插件时,您不再需要单独的项目进行测试。生产源应该放在src/main/java目录,测试源应该放在src/instrumentTest/java。这同样适用于资源。

来自project structure 上的 Android Gradle 插件用户指南。

项目结构

上面的基本构建文件需要一个默认的文件夹结构。 Gradle 遵循约定优于配置的概念,尽可能提供合理的默认选项值。

基本项目从两个称为“源集”的组件开始。主要源代码和测试代码。它们分别居住在:

src/main/
src/instrumentTest/

在每个文件夹中都存在每个源组件的文件夹。 对于 Java 和 Android 插件,Java 源代码和 Java 资源的位置:

java/
resources/

对于 Android 插件,Android 特有的额外文件和文件夹:

AndroidManifest.xml
res/
assets/
aidl/
rs/
jni/

注意:src/instrumentTest/AndroidManifest.xml 不需要,因为它是自动创建的。

您可以更改standard project layout

sourceSets {
    instrumentTest {
        java {
            srcDir '../other/src/java'
        }
        resources {
            srcDir '../other/src/resources'
        }
    }
}

【讨论】:

  • 我不认为队长会接受这种带有源代码的行为。可能有另一种编译测试apk文件的方法吗?或者可以通过链接到主项目文件夹的某种方式运行它?
  • @user2172741 您可以更改测试源文件的目录。检查更新。但请记住“约定优于配置”!
  • Grzegorz,“23.12.1. 测试执行”一章说“测试在单独的 JVM 中执行,与主构建过程隔离。”。据我了解,我无法通过这种方式在设备或模拟器上运行 UI 测试,可以吗?
  • @user2172741 在编译 Android 项目时,您使用在模拟器或设备上执行检测测试的 android 插件。它不同于 Gradle 的标准 Java 插件。 tools.android.com/tech-docs/new-build-system/…
  • 谢谢。现在我可以同时构建项目和测试 apk 文件(正如您所建议的,只有一个带有默认文件夹的项目),但我不能签署测试 apk 文件(所以我不能测试项目的发布版本)并且运行测试说那里有 0 个测试待定
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
相关资源
最近更新 更多