【问题标题】:The difference between running tests from AndroidStudio and gradle task从 AndroidStudio 和 gradle 任务运行测试的区别
【发布时间】:2019-04-02 12:28:38
【问题描述】:

我有在我的项目中使用 mockito 和 powerMockito 的本地测试。其中大约有300个。 当我从 Android Studio(运行 -> 运行测试配置)运行它们时,它们都通过了。 但是我们的 CI 系统使用 gradle 任务 testDebugUnitTest 启动它,其中大约 90 个失败并出现不同的错误。

问题是:这些机制有什么区别?

【问题讨论】:

  • 这真的很广泛,因为它取决于测试做什么,他们对环境的期望,他们如何失败等等。它可能是一些具有相对路径的文件,它可能是环境变量,差异在 OS-es 之间,它可能是 JDK 的差异,你可以命名它......确实没有提供足够的信息来得出一个理智的结论。您必须自行调查并找出存在哪些差异(可能是工具中的错误)。如果您可以提供我们可以用来重现您的场景的准确信息,那么我们可以进行调查。否则我们无法猜测。
  • 嗯,问题实际上是:当我在 android studio 中单击“运行”的绿色按钮时会发生什么? Gradle 运行了吗?要不然是啥?我不想修复这 90 个测试,这是另一回事。
  • 如果你从 Gradle 运行,你可以保证它可以工作。根据我的经验,从 Android Studio 运行无法重新构建测试,并且要么使用来自 ./gradlew test 的缓存测试,要么说找不到测试套件。这可能会在以后的版本中修复
  • 你找出问题所在了吗?

标签: android-studio android-gradle-plugin mockito powermock


【解决方案1】:

你在使用 Android Gradle(https://developer.android.com/studio/releases/gradle-plugin.html) 插件吗?

必须知道 Android Studio 构建系统是基于 Gradle 的,并且 Gradle 的 Android 插件添加了一些特定于构建 Android 应用程序的功能。尽管 Android 插件通常与 Android Studio 同步更新,但该插件(以及 Gradle 系统的其余部分)可以独立于 Android Studio 运行并单独更新。

这里的官方文档:https://developer.android.com/studio/releases/gradle-plugin.html

因此,如果存在版本和平台相关的差异,我们应该预期结果会有所不同。

希望这会有所帮助!

【讨论】:

  • 在您执行“运行”时检查 Android Studio 正在运行哪个 gradle 任务。您可以在“事件日志”窗口 [右下角] 中查看此信息。
  • @RanjanKumar 是的,天气暖和了。但我看不到谁在运行测试。我所看到的只是为测试准备二进制文件的工作。
猜你喜欢
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
  • 2016-02-04
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
相关资源
最近更新 更多