适用于Android的测试驱动开发

时间:2012-12-04 10:46:19

标签: android testing tdd

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

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

3 个答案:

答案 0 :(得分:7)

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

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

This视频会告诉您几乎所有为您提供单元测试Android代码的内容。

更新: 通过Android工作室支持和新的Android生态系统,现在单元测试可以作为一流的练习。有关详细信息,请参阅http://developer.android.com/training/testing/unit-testing/local-unit-tests.html

有几种很好的方法来测试驱动Android代码。到目前为止,我发现的最有效的方法是使用MVVM(模型 - 视图 - 视图模型)或MVP(模型 - 视图 - 演示器)方法,其中业务逻辑和表示逻辑与视图分离,可以很容易地成为单元测试

答案 1 :(得分:3)

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

答案 2 :(得分: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等,但只能在单独的Continous Integration服务器上运行,例如每小时一次)

通过这种方法,您的逻辑也将更加便携。