【问题标题】:Android Junit Testing vs. Normal Junit TestingAndroid Junit 测试与普通 Junit 测试
【发布时间】:2013-04-16 18:00:21
【问题描述】:

我正在接管一个 android 项目,我希望在项目中引入单元测试,以帮助避免可能的回归。

对于普通的 java 项目,我有两个源文件夹:srctestsrc 源文件夹包含我所有的源文件,我的test 源文件夹包含我所有的单元测试,我认为这是将测试与源分开的标准,所以你不必附带它们.

我一直在网上阅读,Android 应用程序的方法看起来有点不同。几个示例讨论了为android test project 设置第二个项目,然后引用android project

我想确认几件事:

  1. 在测试 android 项目时,是否有第二个项目来测试合适的事情,或者我只是发现了不好的例子?
  2. 所有单元测试都应该是android单元测试吗?例如。是的,它们都应该是,否则我应该在 android 单元测试和 junit 之间混合使用,因为 junit 的开销较小。
  3. android 单元测试相对于junit 测试有哪些额外的好处?例如。模拟器等的句柄。

【问题讨论】:

    标签: android junit android-testing


    【解决方案1】:

    是否有第二个项目来测试合适的事情 当涉及到测试 android 项目或者我只是发现不好 例子?

    是的,通常有一个单独的“测试项目”来测试 Android 特定代码。 http://developer.android.com/tools/testing/testing_android.html

    所有单元测试都应该是android单元测试吗?例如。是的,他们都应该 是,或者不是我应该在android单元测试和junit之间混合,因为 junit 的开销更少。

    您通常会混合使用,因为您无法使用常规 ole' JUnit 在标准 JVM 上测试 Android 特定代码(并非没有一些帮助程序库,稍后会详细介绍)。

    在实践中,我发现将应用程序划分为普通的 JVM 组件和 Android 部分是有意义的。例如,如果您需要与 REST API 进行通信,您可以拥有一个单独的组件,该组件仅执行此操作,并且是 plain Java。这些类型的组件可以很容易地使用标准 JUnit 进行测试。这种类型的架构还导致更清晰的职责分离,并且通常也更容易理解和维护设计。 (此类组件可以作为常规 JAR 包含在您的 Android 应用程序中。)

    与 junit 测试相比,android 单元测试有哪些额外的好处? 例如。模拟器等的句柄。

    Android 测试可能会很慢而且很痛苦,因为完整的 Android 测试会在模拟器(或设备上)中运行 Android 堆栈。然而,Android 测试对于测试特定于 Android 的应用程序部分是必要的,例如 Context/Activity/Service 等。

    由于原生 Android 测试的繁琐和缓慢的特性,已经创建了几个框架来模拟或存根 SDK 的部分并采用不同的方法来提供帮助。例如,您可能想研究一下 Robolectric 和 Robotium。 (这些各有优缺点。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多