【问题标题】:Test Driven Development For AndroidAndroid 的测试驱动开发
【发布时间】:2012-12-04 10:46:19
【问题描述】:

我们可以在 Android 中使用 JUnit 进行测试驱动开发吗?如果没有,是否有类似于 JUnit 的替代方法?

我在 google 上搜索了一下,还阅读了一个 SO 帖子 Android Test Driven Development 看起来 Android 从来没有考虑过 TDD。在开始学习 TDD 并同时进行 Android 开发之前,我想确定一下。

【问题讨论】:

  • 您的问题与您所指的问题有何不同?
  • @rds - 从那以后情况变得更好了吗?我是初学者,如果没有适当的研究,我不想进入这个领域。

标签: android testing tdd


【解决方案1】:

我认为您可以完全依靠 Robolectric 在 JVM 中运行测试。您可以使用 JUnit4 测试您的 POJO,Robolectric 为您提供测试 Android 组件的支持。

我也是 TDD for Android 开发的初学者。我发现 Robolectric 对测试我的代码非常有用。

This 视频将告诉您它为您提供的用于对 Android 代码进行单元测试的几乎所有内容。

更新: 借助 Android Studio 支持和新的 Android 生态系统,现在可以将单元测试作为一流的实践来完成。详情请参考http://developer.android.com/training/testing/unit-testing/local-unit-tests.html

有几个很好的方法来测试驱动 android 代码。到目前为止,我发现最有效的方法是使用 MVVM(model-view-viewmodel) 或 MVP(model-view-presenter) 方法,其中业务逻辑和表示逻辑与视图解耦并且可以很容易地成为单元经过测试。

【讨论】:

    【解决方案2】:

    是的,我们可以使用 JUnit 进行测试驱动开发。与您一起发起可以参考以下 链接:http://developer.android.com/tools/testing/testing_android.html#JUnit 按照文档,我们可以使用 junit.framework 来完成单元测试。

    【讨论】:

    • 但有一个问题 - “您可以使用 JUnit TestCase 类对不调用 Android API 的类进行单元测试。”我们该如何处理?
    • 这就是为什么有 AndroidTestCase,您可以使用它来测试依赖于 Android 的对象。
    • 问题在于,在 TDD 方法中,测试必须很快,但在模拟器上部署/运行测试会使它们变慢。
    【解决方案3】:

    这里稍微解释一下问题空间:http://www.techwell.com/2013/04/applying-test-driven-development-android-development

    结论是您应该使用 Robolectric。不幸的是,Robolectric 很慢,如果你甚至在实用的层面上遵循 TDD,你最终会得到数百个测试,这将运行 10 秒。这不是你想用 TDD 做的。 TDD 测试包最多应该在几秒钟内运行。

    我的建议是:

    • 围绕简单调用 Android 类的 Android 类创建包装类。
    • 用纯 Java 编写您的应用逻辑。
    • 使用 Junit(或 TestNG 或任何你喜欢的东西)来测试你的模型/业务逻辑
    • 偶尔将 Robolectric 用于包装类(可能您不必使用)
    • (您可以编写使用多个类、Robolectric 等的集成测试,但只能在单独的持续集成服务器上运行,例如每小时一次)

    使用这种方法,您的逻辑也将更加可移植。

    【讨论】:

      猜你喜欢
      • 2011-09-09
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 2010-11-21
      • 2013-08-24
      • 1970-01-01
      相关资源
      最近更新 更多