android - 在 Android 中运行单元测试的最快方法是什么

标签 android unit-testing gradle

有两个选项可用于在 Android Studio 中运行单元测试:

  1. 右键单击包含单元测试的文件(即 Gradle-Aware Make)。
  2. testAppDebugUnitTest 任务来自可用 Gradle 任务列表。

第一个实际上包含两个任务: - :app:assembleAppDebug:app:assembleAppDebugUnitTest

第二个就是testAppDebugUnitTest本身。

第一个是 recommended谷歌工具团队的方式,但与第二个相比,它花费的时间是第二个的两倍。

除了持续时间之外,如何运行单元测试没有明显的区别。您可能认为没有 assembleAppDebug 就无法编译您的代码,但事实并非如此 - 您对测试中的类或测试本身按预期编译和执行的更改进行了更改。

那么,如果在实际单元测试运行之前准备所有内容需要两倍的时间,那么有什么区别?为什么推荐使用这种方法?

最佳答案

我没有太多使用 Gradle 的工作经验,但当然最好使用 Google 团队推荐的工具而不是其他工具。

it takes as twice as much time compared to the second one.

如果您将新的 Gradle 构建系统与 Android(或 Android Studio)一起使用,您可能已经意识到,即使是最简单的 Gradle 调用(例如 gradle 项目或成绩任务)也非常缓慢。

为避免这段时间在 android studio 中占用进程,您需要 Speed up Gradle build time 。这肯定会有所作为

这里有几个步骤可以加快 Gradle 构建时间 >>

  • 在编译器设置中(Android Studio -> Preferences -> Project 设置[您的项目] -> 编译器(基于 Gradle 的 Android 项目)), 在“命令行选项”框中键入 --offline。

    从 ~4 分钟到 ~20 秒。

enter image description here

  • 另外,如果你告诉 Gradle 使用守护进程来构建,你可以减少 Gradle 的启动时间(在我的电脑上减少到两秒)。只需在以下目录中创建一个名为 gradle.properties 的文件:
    • /home/<username>/.gradle/ (Linux)
    • /Users/<username>/.gradle/ (苹果机)
    • C:\Users\<username>\.gradle (Windows)

将此行添加到文件中:

org.gradle.daemon=true

从现在开始,无论您是从命令行使用 Gradle 还是在 Android Studio 中构建,Gradle 都将使用守护进程进行构建。您还可以将 gradle.properties 文件放在项目的根目录中,并将其提交到您的 SCM 系统。但是您必须为每个项目执行此操作(如果您想在每个项目中使用守护程序)。

注意:如果你有一段时间(目前是 3 小时)没有用 Gradle 构建任何东西,它会停止守护进程,这样你下次启动时间就会很长构建。

更多详情请引用 Building and running app via Gradle and Android Studio is slower than via Eclipse

性能改进是 Gradle 路线图中 2015 年(以及到 2016 年)的重要任务之一。所以希望,我们会看到这些年的总体表现有所提高。

n g+ 有一个 discussion与开发人员讨论它。

希望这些信息对您有所帮助。

关于android - 在 Android 中运行单元测试的最快方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31975062/

相关文章:

C++ 单元测试在运行所有测试时或在某个测试之后失败

unit-testing - 在 Dart 中测试包含异步函数的函数

android - 我在android studio中收到以下错误:java.util.concurrent.ExecutionException:com.android.builder.internal.aapt.AaptException:

android - 失败:生成失败,发生异常。同时使用Savillians-gradle和Triple-T gradle上传APK

android - 安全和不安全 cookie 之间的区别

android - Android 上 Local Service 和 Activity 的通信

java - 如何在从数据库获取数据的同时创建异步任务加载后台

android - 如何在这些复选框上使用 ScrollView

c++ - C++中的依赖注入(inject)

java - 从Android应用程序中的其他模块引用公共(public)模块