在Android Studio中运行单元测试有两个选项:
Gradle-Aware Make
)。testAppDebugUnitTest
任务来自可用的Gradle任务列表。第一个实际上包含两个任务:
- :app:assembleAppDebug
和:app:assembleAppDebugUnitTest
第二个只是testAppDebugUnitTest
本身。
第一个是Google工具团队的recommended方式,但与第二个相比,它需要两倍的时间。
除了持续时间之外,如何运行单元测试没有明显区别。您可能认为您的代码不会在没有assembleAppDebug
的情况下编译,但事实并非如此 - 您在测试中引入任何类的更改或者按预期编译和执行的测试本身。
那么,差异是什么呢?如果在实际的单元测试运行之前准备好所有东西需要两倍的时间,那么为什么它是推荐的方式?
答案 0 :(得分:13)
我没有多少Gradle的工作经验,但是当然最好使用Google Team推荐的工具而不是其他工具。
与第二次相比,它需要两倍的时间。
如果您使用Android(或Android Studio)的新Gradle构建系统,您可能已经意识到,即使是最简单的Gradle调用(例如gradle项目或成绩任务)也非常慢。
为避免这段时间在Android工作室中进行处理,您需要 Speed up Gradle build time 。它肯定会有所作为
以下是加快Gradle构建时间>>
的几个步骤在编译器设置中(Android Studio - >偏好设置 - >项目 设置[您的项目] - >编译器(基于Gradle的Android项目)), 在"命令行选项中键入--offline"框。
从约4分钟到约20秒。
/home/<username>/.gradle/
(Linux)/Users/<username>/.gradle/
(Mac)C:\Users\<username>\.gradle
(Windows)将此行添加到文件中:
org.gradle.daemon=true
从现在开始,Gradle将使用守护进程进行构建,无论您是从命令行使用Gradle还是在Android Studio中构建。您还可以将gradle.properties文件放在项目的根目录中,并将其提交到SCM系统。但是你必须为每个项目做这个(如果你想在每个项目中使用守护进程)。
注意:如果你没有使用Gradle构建任何东西一段时间(目前是3个小时),它将停止守护进程,这样你将在下一个时间内体验到很长的启动时间建立。
有关详细信息,请参阅此Building and running app via Gradle and Android Studio is slower than via Eclipse
绩效改进是2015年Gradle路线图(并进入2016年)的重要任务之一。所以希望,我们会看到这些年来总体表现在不断提高。
n g +与开发者有关于它的discussion。
希望这些信息对您有所帮助。
答案 1 :(得分:4)
你的选项1花费两倍时间的原因是因为大部分时间都浪费在旋转Gradle并检查任务是否是最新的。所以运行无操作组合会使它长两倍。您可以通过自己运行来验证这一点,并通过执行no-op来检查浪费的时间。
使用gradle,使用&#34; - offline - daemon --parallel&#34;可以让你到达某个地方(当您对Maven / JCenter repos的访问速度较慢时,离线功能非常有用,守护程序有助于保持文件缓存,并且如果您启用MultiDex并将应用程序拆分为小模块,则并行特别有用)
如果您只是询问&#34;什么是在Android中运行单元测试的最快方式?&#34;如果不考虑你需要的改变,我建议切换到Buck(https://buckbuild.com/),这比dex-xing和旋转测试快10倍,但AS支持有限。