【问题标题】:Testing my maven library compatibility with Android测试我的 Maven 库与 Android 的兼容性
【发布时间】:2016-04-07 09:24:32
【问题描述】:

TL;DR

我有一个使用 maven 构建和测试的 Java 项目。在 Android sdk 上运行我的 junit 测试最简单的方法是什么?

更多详情

提交后,用户打开一个错误报告,解释说我破坏了与 android 的兼容性,因为我引入了对 javax.xml.bind 的依赖,而这个包在 Android 上不存在。

现在我设法在不使用此软件包的情况下实现了我的功能,并且我想确保不再破坏这种兼容性。因此,我想在 Android Sdk 上运行我现有的 junit4 测试。问题是我是一个 Android 菜鸟,我开始淹没在文档中:

  • 使用local unit tests 会满足我的需求吗?
  • 如果是,我可以将它们与 maven 一起使用还是先切换到 gradle? (即:documentation 解释了如何使用 Gradle 来实现。这是先决条件,还是可以使用我现有的构建系统来实现?)
  • 或者我必须承担使用instrumented unit tests 的负担吗? (考虑到我的项目中根本没有 UI 的概念,这些还能用吗?)

【问题讨论】:

  • 其实是个有趣的问题。我可以回答 1) 是的。 Android Studio 将跟踪您没有使用由于 API 级别 minSdkVersion 库的限制而不允许使用的 API。 3) 除非您想测试活动和一些复杂的端到端 UI(片段、意图等)场景 - 您最好使用 JUnit 测试。我没有完全理解第二个问题。你能扩展它的描述(解释你的想法)吗? (不幸的是,我对 maven 不太熟悉)
  • 感谢您提供此信息。我刚刚编辑了我的第二个问题。换一种说法:据我了解,Gradle 被描述为 Maven 的“继任者”。特别是,developer.android.com/training/testing/unit-testing/… 正在解释如何使用 Gradle 构建和测试。如果绝对需要,我可以更改我的构建系统。另一方面,是否可以使用 maven-android-plugin (simpligility.github.io/android-maven-plugin/index.html) 来做我想做的事情?
  • "people say"(C) 是可能的并且需要Surefire Plugin,尽管它看起来很古老并且设置起来并不容易。所以如果我是你,我会选择 Gradle。但如果它的成本太高 - 好吧。 maven 也可以。
  • 感谢您的指点!
  • 不客气。我希望,你会管理它! (实际上,之后在博客的某个地方分享可能是一次有趣的经历)。到目前为止,我已经将我们的对话框转换为下面的答案。

标签: java android maven unit-testing junit


【解决方案1】:
  1. 是的。 Android Plug-in for Gradle 会跟踪,由于库的 API 级别 minSdkVersion 限制,您没有使用不允许使用的 API。 (我很确定,它也可以使用 maven-android-plugin 存档)

  2. 它是possible,需要Surefire Plugin。不幸的是,我没有亲自尝试过,所以我只能从我简要阅读的内容中说 - 它看起来很古老,而且设置起来并不容易。所以如果我是你,我会选择 Gradle。但如果它的成本太高 - 好吧。 maven 也可以。

  3. 除非您想测试活动和一些复杂的端到端 UI(片段、意图等)场景 - 您最好使用 JUnit 测试。即使您确实需要与 Android 的 Activity/Fragment 相关的东西,您也可以使用 Robolectric lib (它是一个单元测试框架,在许多情况下可以避免仪器测试)

【讨论】:

    猜你喜欢
    • 2012-03-03
    • 2023-03-15
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多