Android 应用程序的自动化单元测试对于其长期质量是必要的。单元测试有助于测试代码的一个单元(例如一个类)。这有助于在开发周期的早期发现和识别错误或回归。在本文中,我们将了解如何为 Android 应用程序编写单元测试。在 Android 中,单元测试可以有两种类型: 本地单元测试 – 在开发机器本身而不是实际机器上运行 仪表化单元测试——在实际的 Android 设备上运行。
使用 JUnit 创建单元测试并使用 Mockito 创建模拟对象 我们将首先为一个添加两个数字的 Android 应用程序创建本地单元测试。 该应用程序包含以下帮助程序类旦我们准备好应用程序,我们现在就有两个主要单元可以在代码中进行测试 NumberAdder – 这是一个普通的 Java 类,它将 MainActivity 作为依赖项。 MainActivity – 显示 UI 的活动。 由于NumberAdder是一个普通的 Java 类,因此可以使用Junit来测试此类。 JUnit 是一个用于编写可重复单元测试的简单框架。
当我们测试一个单元(在本例中为 NumberAdder)时,可以模拟 NumberAdder 所依赖的所有其他类。Mockito是一个在 Java 中模拟依赖关系的好框架。要将 JUnit 和 Mockito 添加为项目中的测试依赖项,请将以下内容添加到 上面的代码创建了 WhatsApp 号码数据 三个测试,并用Test注解进行了注解。该测试使用 MockitoJUnitRunner 运行。该运行程序为每个用 注释的字段注入一个模拟对象。MainActivity 在上面的测试中被模拟。在前两个测试中,我们根据函数返回的值进行断言。在第三个测试中,我们设置调用 getFirstNumber 和 getSecondNumber 时要返回的值。然后我们验证 mMockMainActivity 上 setAdditionResult 方法的值是否正确。
一旦我们编写了这些本地 JUnit 测试,我们就可以使用 gradle 命令运行它们。如果所有测试都通过,则构建将成功;否则,构建将失败。 ./gradlew test 使用 Roboelectric 编写测试 Robolectric是 Android 的单元测试框架。使用 Roboelectric,您可以在工作站上的 JVM 上运行 Android 单元测试。这对于在工作站上对 Android 代码进行单元测试变得非常方便。
如果未通过测试,构建可能会失败。 要将 Roboelectric 添加到您的测试依赖项,请按如下方式更新您的依赖项 在上面的测试中,我们创建了 MainActivityTest。它使用 RobolectricGradleTestRunner 运行。 然后我 电子邮件数据 们使用 Roboelectric API“Robolectric.setupActivity”来实例化该活动。它还调用其生命周期方法,如“OnCreate”、“onStart”等。然后我们获取活动中的不同视图元素并设置值。设置值后,我们单击按钮。然后我们最终使用“assertEquals”验证结果 TextView 是否具有适当的值。 如上面的示例所示,Roboelectric 可以轻松为 Android 代码编写单元测试。 编写 Android Instrumentation 测试 Android 允许您编写仪器单元测试。
这些是在实际 Android 设备上运行的测试。当您在实际设备上进行测试时,您不需要模拟 Android 类。通过仪器测试可以轻松测试 Android 组件(例如 Activity 等)。但问题是你需要一个实际的设备来运行测试。这些无法在您的工作站上运行它。 要添加检测,请更新 Gradle 依赖项,如下所示 。ActivityInstrumentationTestCase2 让我们为 Activity 编写测试。在此类的构造函数中,我们应该传递被测试的活动(在我们的例子中为“MainActivity”)。然后我们重写“setUp”方法,在该方法中我们获取活动对象和活动的其他 UI 元素。然后我们编写一个与上一节中编写的测试类似的测试。该测试有一个注释”。这将使该测试在 UI 线程上运行,因为我们在测试中有一些 UI 操作。