代码之家  ›  专栏  ›  技术社区  ›  bianca

Android单元测试用例自动化:Robolectric库与Android测试框架

  •  47
  • bianca  · 技术社区  · 13 年前

    想知道哪一个是为android应用程序和库编写单元测试用例的更好选择:使用Robolectric库还是坚持使用android测试框架。我想在命令行运行测试套件,并希望它独立于配置模拟器或让设备连接到构建机器的需要。你们中有人对这两者进行比较分析吗?还是做得更好?你的经验将极大地帮助我决定更好的解决方案。

    2 回复  |  直到 13 年前
        1
  •  103
  •   Jason Sankey    13 年前

    我使用分层系统,在可能的情况下,我更喜欢早期的分层:

    1. 纯单元测试。我试图使尽可能多的代码完全独立于Android API,然后使用可以在任何JVM上运行的“纯”单元测试。这些测试是最快的,它有助于保留不需要特定于Android的可移植代码。
    2. Robolectric支持单元测试。我的代码对Android API只有很小的依赖性,可以通过Robolectric阴影来满足,我用Robolectic测试它。与纯测试相比,Robolectric的设置时间多一点,但它仍然比在模拟器上启动/运行更快。
    3. Android框架测试。在Robolectric没有切割它的地方——要么是因为阴影不存在,要么是因为我大量使用Android API(因此想针对Real Thing进行测试)——我使用默认框架编写在模拟器/设备上运行的测试。

    分层的目的是使事情尽可能简单,这样可以使整个套件更快地运行,并有助于推广更干净的代码。

        2
  •  11
  •   Akanksha Rathore    11 年前

    我在这两方面都做过,我发现:-

    1) Robolelectric不支持API 19,其文档中提到了这一点- http://robolectric.org/eclipse-quick-start/ 。太棒了 它的缺点。

    2) Robolectric在JVM上运行,而不是在DVM上运行。所以我们不能 检测该特定时间GPS是否在设备中启用 等等。我们只能通过我们预先决定的价值。

    3) Robolectric中的代码编写比专门用于 碎片有很多复杂性和问题。

    4) Robolectric需要外部jar和配置,并用于junit测试 我们不需要任何外部图书馆。

    5) Robolectric速度更快,因为它在JVM上运行,但它有 缺点也是,我们在设备上看不到UI,屏幕代码是什么 正在执行。

    对于Android,我喜欢jUnit测试。