【问题标题】:How do I make IDEA/Android Studio recognize my unit test folder when using Gradle?使用 Gradle 时如何让 IDEA/Android Studio 识别我的单元测试文件夹?
【发布时间】:2014-07-27 16:15:22
【问题描述】:

所以我已经成功地通过关注this guide 让 Gradle 为我的 Android 项目运行标准 Junit 测试,但我很难让 Gradle 生成我的 .IML 文件,以便 IDEA 识别我的单元测试文件夹。它在项目树中不是绿色的。

所以这是我的 build.gradle 文件的摘录:

apply plugin: 'android'

sourceSets {
    unitTest {
        java.srcDir file('src/test/java')
    }
}

task unitTest(type:Test, dependsOn: assemble) {
    description = "run unit tests"
    testClassesDir = project.sourceSets.unitTest.output.classesDir
    classpath = project.sourceSets.unitTest.runtimeClasspath
}

这是我想要 Gradle 生成的 .IML 文件中的行,但它没有:

  <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />

如果我手动添加它,每当我对 build.gradle 进行任何更改时,它都会被 Gradle 删除,所以这很糟糕。

我也尝试将这些行添加到构建文件中,没有任何区别:

apply plugin: 'idea'
idea {
    module.testSourceDirs += file('scr/test/java')
}

每次进行任何更改时,我都会按下刷新按钮,以便重新生成 IML 文件。

我做错了什么?

【问题讨论】:

  • AFAIK 这并不容易。在公司中,我的工作人员可以从 AS 运行测试,但代码没有刷新(必须使用 gradle 手动重建)。这一切都是一团糟。如果你成功了,分享解决方案。

标签: intellij-idea gradle android-studio android-gradle-plugin build.gradle


【解决方案1】:

当我不使用默认的 gradle 文件结构时,我遇到了麻烦。尝试将测试放在“src/androidTest/java”下,然后修改“build.gradle”文件以在“defaultConfig”中包含测试信息

android {
    defaultConfig {
        testPackageName "com.yourpackage.test"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
        testFunctionalTest true
    }
}

这对我有用 - 我可以在 Android Studio 中运行测试。

【讨论】:

    【解决方案2】:

    我正在使用带有 Gradle 1.3.0 的 Android Studio 1.3.2,发现我必须在 Build Variants 选项卡中将 Test Artifact 更改为 Unit Tests。之后,IDE 将按预期工作。我在http://tools.android.com/tech-docs/unit-testing-support找到了信息。

    【讨论】:

    • 是的,当我问这个问题时,这个选项不存在,但现在绝对是正确的解决方案。问题中提到的idea 插件也不再需要(尽管它可能很有用)
    猜你喜欢
    • 2014-03-22
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多