【问题标题】:Trouble with logging and Junit test within Android Junit projectAndroid Junit项目中的日志记录和Junit测试问题
【发布时间】:2013-02-11 17:00:36
【问题描述】:

我有一个 Android 项目,其中有一些活动以及一些常规 Java 代码,我希望能够使用 Junit 测试所有这些。我在我的常规 android 项目旁边创建了一个 Android Junit 项目并包含 Junit 4 库,以便我可以运行 android junit 测试和常规 junit 测试。

一切正常,即 Junit 测试正在运行并通过,直到我尝试使用 SLF4J for Android 将日志记录添加到我的主项目中。现在,每当我尝试运行 Junit 测试时,都会出现错误:

java.lang.NoClassDefFoundError: android/util/Log
...
Caused by: java.lang.ClassNotFoundException: android.util.Log

有没有人知道为什么会发生这个错误?如果有更好的方法来设置我的项目以使 Junit 和 Android Junit 测试成为可能,我会全力以赴!

【问题讨论】:

  • 我实际上更喜欢 Robolectric 进行 Android 单元测试:pivotal.github.com/robolectric 不确定它是否会帮助您解决实际问题。
  • 感谢您的意见!我会考虑使用 Robolectric。但就像你说的,我不确定它是否能解决这个问题。

标签: android logging junit


【解决方案1】:

如果您在主机的 JVM 上作为 JUnit 运行测试,您将无法访问像 android.util.Log 这样的 Android 类。 android.jar 仅提供存根。

【讨论】:

  • 我通过在我的测试项目中添加一个“android.util”包来解决这个问题,然后将Log.class签名(来自Open Declaration, F3)复制到Log.java,然后bam,不再我的 JUnit 测试中的错误。这对我有用,因为我只是在做一些中间件,实际上并没有使用任何 Android 特定的类。如果您的代码引用了很多 android. 命名空间,那可能工作量太大,但在这种情况下,您可能还是想在 AVD 中进行测试。
猜你喜欢
  • 2017-07-26
  • 2018-03-28
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多