【问题标题】:How to disable android studio unit tests (androidTest)如何禁用 android studio 单元测试 (androidTest)
【发布时间】:2016-05-04 17:23:01
【问题描述】:

我已经将一个eclipse项目导入到android studio中

不知何故,它发现我的另一个 eclipse 项目包含导入项目的单元测试代码

它引入了该代码并将其放在 src/androidTest 目录中

我真的不希望它这样做,但它们现在在那里并导致构建失败

有没有办法关闭 androidTest 的东西?所以我可以专注于应用程序是否真正构建?

也许是通过 gradle 设置? (这是我第一次接触gradle)

也许我只需要删除所有 androidTest java 文件,但这似乎有点最终..

【问题讨论】:

  • 可以做的解决方法是通过转到“Gradle 项目”->“:app”(或您的应用程序目录调用方式)来构建您的应用程序-> “建造”。它会为你编译一个apk。 (或使用默认参数和适当的模块创建“Android 应用程序”配置 - 然后运行它,而不是完全重建/制作整个项目)。 IE。这个想法是避免构建整个项目,除非你真的需要它,而是构建应用程序。
  • 另外,如果您不想删除所有文件,您可以将“androidTest”文件夹重命名为“_androidTest”之类的名称,这样它们就不会再出现在 Project 中了。

标签: android eclipse unit-testing android-studio


【解决方案1】:

将此代码放入您应用的 gradle 脚本中:

tasks.whenTaskAdded { task ->
    if (task.name.equals("lint")) {
        //this is for speed up build
        task.enabled = false
    }
    if(task.name.contains("Test"))
    {
        //this is what you need
        task.enabled = false
    }
}

gradle 添加任务时,这段代码会检查任务名称。 如果此任务是“lint”(check here),则不需要每次构建。 如果此任务有“任务”字样,我们可以随意跳过。

:app:preDebugAndroidTestBuild SKIPPED
:app:compileDebugAndroidTestAidl SKIPPED
:app:processDebugAndroidTestManifest SKIPPED
:app:compileDebugAndroidTestRenderscript SKIPPED
:app:generateDebugAndroidTestBuildConfig SKIPPED
:app:generateDebugAndroidTestResValues SKIPPED
:app:generateDebugAndroidTestResources SKIPPED
:app:mergeDebugAndroidTestResources SKIPPED
:app:splitsDiscoveryTaskDebugAndroidTest SKIPPED
:app:processDebugAndroidTestResources SKIPPED
:app:generateDebugAndroidTestSources SKIPPED

我不知道这些任务是什么。但是当我跳过我的项目时,除了速度(因为我没有测试文件而影响不大),这对 gradle 构建系统来说是一个痛苦。

希望对你有帮助。

【讨论】:

  • 不鼓励仅使用代码的答案,因为它们没有说明如何解决问题。请更新您的答案,以解释这如何改进该问题已有的其他已接受和赞成的答案。请查看How do I write a good answer
  • 感谢您的评论。我是新手。我的英语也不足以告诉细节。我一直在从该网站获得帮助。我认为它可能会以某种方式帮助某人。如果你愿意,我可以删除它。
  • 感谢您更新您的答案!不用担心您的英语,只要我们理解您要解释的内容,其他用户可以对其进行编辑以改进文本:)
  • 非常糟糕的方式 :) 任何其他非“测试”任务案例 :) 像项目名称包含名称“测试 + 后”、“前 + 测试”、“前 + 测试 + 后”?
【解决方案2】:

有人可能会觉得这很有用:如果您使用的是JUnit,则有一个@Ignore 命令,您可以使用一个测试方法来忽略整个测试方法。

示例:

@Ignore("This test will be ignored")
@Test
public void my_test_method() {
    // test code here...
}

【讨论】:

    【解决方案3】:

    在 Android Studio 中重新构建项目后 - 项目中的所有源文件都会重新编译。大量不同的任务开始,包括:compileDebugAndroidTestJavaWithJavac,一旦您的仪器测试无法编译,就会导致构建中断。

    在 Android Studio 中调用重建只是将这些任务传递给 gradle 的 UI:

    Gradle 任务 [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:prepareDebugUnitTestDependencies, :app:mockableAndroidJar, :app:compileDebugSources, :app:compileDebugAndroidTestSources, :app:compileDebugUnitTestSources]

    即没有明显的方法可以修改它。

    解决方法:

    • 注释掉 androidTest 中的损坏文件
    • 删除/重命名 androidTest 目录
    • 使用 Android plugin for Gradle 构建项目并传递所有命令,除了与 InstrumentalTests 相关的命令
    • 避免制作/重建解决方案,只需添加(如果尚不存在)Android 应用程序配置并自行构建应用程序,无需工具测试

    希望对你有帮助。

    【讨论】:

    • 在 androidTest 前面加上一个 _。看不到如何在 android studio 中重命名目录,所以我在 emacs 中完成了
    猜你喜欢
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    相关资源
    最近更新 更多