【问题标题】:Using Android Test Framework使用 Android 测试框架
【发布时间】:2010-01-12 06:56:33
【问题描述】:

Android 提供了各种测试包,比如

AndroidTestCase 应用测试用例 仪器测试用例 ActivityInstrumentationTestCase2 ActivityTestCase

我需要知道如何确定最适合测试我的应用的软件包。此链接中提供了一些信息

http://developer.android.com/reference/android/test/package-summary.html

但我需要更清楚地说明这一点......

【问题讨论】:

    标签: android testing


    【解决方案1】:

    TestCase – 普通的旧 JUnit 测试用例。它可以扩展到测试不绑定到 Android 框架的实用程序类。

    AndroidTestCase – 它扩展了 JUnit 的 TestCase。这是一个打火机 测试类比较 活动测试用例。它不需要 启动一个活动来运行它。它的 getContext() 方法允许您获取 如果你需要一个注入的上下文。 因为您可以从中获得上下文 类,你可以膨胀你的 UI 对象 测试他们的行为。

    ActivityInstrumentationTestCase2 – 这是 ActivityInstrumentationTestCase 的较新版本。 ActivityInstrumentationTestCase 在 Android SDK 1.5 中已弃用。与 AndroidTestCase 相比,这是一个更重的测试类。它为单个活动提供 UI 和功能测试。您可以通过调用其 getActivity() 方法来获取您正在测试的注入活动。正在测试的活动在每次测试之前和之后启动和完成。

    ActivityUnitTestCase – 它提供 被测试的活动是孤立的 环境。当使用它来测试一个 活动,活动不附加 到系统。这给你更多 控制什么样的环境 你希望你的活动是 经测试。

    ApplicationTestCase – 它为应用程序类提供测试。可用于测试应用程序的生命周期。

    InstrumentationTestRunner – 运行 Android 测试的运行器 案例。

    我刚刚找到这个..希望这对其他人有帮助...如果您想了解更多详细信息,例如何时以及如何使用,请参阅 android SDK 中示例目录中的 APIDemos 测试应用程序。

    【讨论】:

    • InstrumentationTestCase 怎么样?
    • ActivityUnitTestCase 不能再为 API24 提供帮助了
    【解决方案2】:

    请看我自己用 PowerPoint 绘制的类层次图。

    接受的答案用文字提供了足够的信息。我只是为了清楚地使用图表:)

    对于@Zorb 询问的 InstrumentationTestCase,它是 ActivityTestCase 等的父类。它使您可以调用getInstrumentation方法来获取一个instrumentation的实例,以便您可以操作应用程序、Activity等。

    【讨论】:

      【解决方案3】:

      简介

      为了澄清您的问题并安排您所要求的课程,必须先将测试分为两类。 JUnit 测试(理论上是纯 Java)和 仪器测试(它们也是 JUnit 测试包的一部分,但允许您测试更多 SDK Android 相关功能)。

      传统的 JUnit 测试会隔离一段代码并运行测试。 Instrumentation 测试更广泛地访问 android 组件。但是仪器测试也来自 JUNIT 包,尽管它们甚至在任何应用程序代码运行之前就在系统中进行了实例化,这解释了为什么速度较慢,此外,它们需要一个模拟器或手机来运行您正在测试的应用程序才能执行。

      (在你提到的所有类中都使用粗体,但还有其他更常用的类,我将不使用粗体字符)。

      ****第一部分**(Junit 测试)**

      A) 扩展 TextCase 的 Junit 测试(通常比 Instrumentation 更快,并与 Mock 框架很好地结合)

      AndroidTestCase:它允许访问您正在测试的Activity的上下文及其资源,它是一个扩展了更多专业子类的基类,非常适合访问数据库、文件系统数据.您可以轻松调用 getContext() 并访问资源,而无需像仪器测试那样与活动建立直接联系。

      ApplicationTestCase 控制您向应用程序发送文本的环境,主要是上下文和生命周期。 AndroidTestCase 的其他真正有用的扩展允许您控制加载器、服务和内容提供程序,但由于某种原因仍然没有任何广播接收器可以使用 InstrumentationRegistry.getTargetContext() 方法 [间接][1] 调用它,然后实例化 BroadCastReceiver .此外,在 Junit 中使用通常比 InstrumentationTests 更快的不同 Mock 框架也很常见

      -.-.-.-.-.-.-.-.--

      ****第二部分**(仪器测试)**

      B) 仪器测试, 扩展了 TestCase 被认为是功能测试,更侧重于确保它们与用户端(MVC 的视图部分)很好地配合。它们通常比其他提到的类别慢

      InstrumentationTestCase 是一个基类,用于向 UI 发送按键事件以模拟 QWERTY 键盘按键或 DPAD 按钮,它还可以启动必须测试的 Activity,甚至是 Intents

      ActivityTestCase 通常不单独使用,它只是有子类的通用代码,但如果你对继承自这个的3个类(见下文)不满意,就像一个新的将来你可以使用它的组件时将不存在一个专用的TestCase 类。

      ActivityInstrumentationTestCase2是编写功能测试最常用的Instrumentation类,从构造函数调用Activity的实例进行测试。基本上你用 getActivity() 调用活动,你可以实际运行该活动的任何方法。

      ActivityInstrumentationTestCase,已被弃用,尽管在 Instrumentation 下的 ActivityUnitTestCase 更类似于单元测试

      【讨论】:

      • 我发现这是一个有用的答案。可惜那些“迟到”的人很少得到支持!
      • 感谢您的赞赏罗伯特,没关系,想要了解更多滚动的社区可能会受益。声誉是相对的,撰写结构化的帖子有助于作者学习
      【解决方案4】:

      我发现来自 droidcon 09 的 this tutorial 非常有用。完整的可下载工作源代码示例。

      编辑:该链接似乎已失效,正如 cmets 中所指出的那样。

      它首先介绍了使用 ActivityInstrumentationTestCase2、TestCase 和 AndroidTestCase 创建摄氏到华氏温度转换器测试。

      【讨论】:

      • 教程链接不再有效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      相关资源
      最近更新 更多