【问题标题】:How to execute Java tests on Android code如何在 Android 代码上执行 Java 测试
【发布时间】:2011-08-31 00:56:38
【问题描述】:

我想执行一个 Java 类来测试 Android 应用程序的功能(来自 Java 模块)以读取/写入数据到文件。如果我在 Android 模块中执行,我会得到 Stub!错误(Android SDK)。如果我安装或模拟,它会很慢(我只是在测试一个特定的部分)。

如果我将 Android 模块作为模块依赖项包含在内,IntelliJ 仍会构建 Android 文件并且我会得到一个存根!执行过程中出错。但是,如果我只包含 classes 目录并将它们标记为已提供,则在 Log.log 时会出现错误。被调用。

有没有办法在 Android 应用程序的组件上运行简单的 Java 测试(不使用 Activity 等),使用 Java SDK 而不构建 Android 特定文件?

【问题讨论】:

  • 我认为这更像是一个 IntelliJ 问题,因为它曾经有效,但不再有效。作为一种解决方法,我创建了一个新项目(Java SDK)并扩展了 Log,覆盖了可能导致 Stub 的 Log.x! (打印 System.out 而不是 super.Log.x)。复制和粘贴代码很痛苦——我希望它仍然可以像以前在 Android 模块中本地使用 Java SDK 那样工作。

标签: java android intellij-idea


【解决方案1】:

您需要检测您的测试并在设备(或模拟器)上运行它们,或者使用 Roboelectric,它提供了 SDK jar 存根类的替代品。

【讨论】:

    【解决方案2】:

    似乎已在 IntelliJ 10 的后续版本中修复 - 无法重现该问题

    【讨论】:

      【解决方案3】:

      虽然您可以使用 Robolectric 或其他技术在主机 JVM 上进行测试,但值得注意的是,这只能在开发周期中用作解决方法,以避免长时间等待测试在模拟器或设备上运行,并且会永远不要替换真实平台上的测试,因为 DalvikJavaSE 运行时之间的不兼容可能会影响测试的准确性。

      最新的设备,引入了更强大的 CPU,在大多数情况下可以以非常合理的速度运行测试,因此可能不需要寻找其他解决方案。

      【讨论】:

      • 这更多的是用于开发测试,快速运行代码 sn-ps,而不是功能测试。
      猜你喜欢
      • 2016-03-04
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 2017-02-02
      • 1970-01-01
      • 2015-10-08
      相关资源
      最近更新 更多