Android官方开发文档Training系列课程中文版:Activity测试之创建运行测试

简介: 原文地址:http://android.xsoftlab.net/training/activity-testing/activity-basic-testing.html为了验证在布局与功能上没有差池,很重要的一点就是需要为每个Activity创建对应的测试类。

原文地址:http://android.xsoftlab.net/training/activity-testing/activity-basic-testing.html

为了验证在布局与功能上没有差池,很重要的一点就是需要为每个Activity创建对应的测试类。对每个测试类还需要创建单独的测试用例,这其中包含测试环境,测试条件以及对Activity测试的测试方法。实现这些便可以进行测试并获知结果。如果其中一项测试失败了,这便意味着在代码中可能存在潜在的问题。

创建测试用例

Activity测试都以结构化的方式实现。要确保将所有的测试放在一个单独的包中,与被测试代码区别开来。

依照惯例,测试包的包名应当由应用的包名+后缀”.tests”组成。在完成测试包的创建之后,添加一个Java类以用于测试。依照惯例,该类的名称应当由要测试的类的类名+后缀”Test”组成。

在Eclipse中创建测试用例的步骤如下:

  • a.在工程中新建一个包。
  • b.设置包名为< your_app_package_name>.tests(例如,com.example.android.testingfun.tests),并点击Finish。
  • c.在该包名下创建一个类。
  • d.设置类名为< your_app_activity_name>Test(例如,MyFirstTestActivityTest),并点击Finish。

设置测试先决条件

测试先决条件由一系列用于测试的对象组成。设置这些先决条件需要重写setUp()方法以及tearDown()方法。TestRunner会在测试之前调用setUp()方法,在测试结束之后调用tearDown()方法。开发者可以通过这两个方法来确保测试被正常初始化以及可以确保在测试结束之后可以及时清理。

在Eclipse中设置测试先决条件:
1.将上面创建好的测试类继承于ActivityTestCase的任一子类。例如:

public class MyFirstTestActivityTest
        extends ActivityInstrumentationTestCase2<MyFirstTestActivity> {

2.接下来,在这个类的内部添加构造方法以及setUp()方法,并添加要测试的Activity的变量声明。例如:

public class MyFirstTestActivityTest
        extends ActivityInstrumentationTestCase2<MyFirstTestActivity> {
    private MyFirstTestActivity mFirstTestActivity;
    private TextView mFirstTestText;
    public MyFirstTestActivityTest() {
        super(MyFirstTestActivity.class);
    }
    @Override
    protected void setUp() throws Exception {
        super.setUp();
        mFirstTestActivity = getActivity();
        mFirstTestText =
                (TextView) mFirstTestActivity
                .findViewById(R.id.my_first_test_text_view);
    }
}

构造方法会在类初始化时由TestRunner调用,而setUp()方法则会在开始测试之前调用。

通常情况下,在setUp()方法内,应当实现以下内容:
- 调用父类的setUp()方法。
- 通过以下步骤初始化先决条件:
- 定义实例变量用于存储先决条件的状态。
- 创建并存储接下来要测试的Activity的引用。
- 持有Activity中需要进行测试的UI组件的引用。

可以通过getActivity()获取要测试的Activity的引用。

添加测试条件

在进行测试之前,还有一个步骤就是需要验证前一步是否设置正确,以及需要测试的对象是否已被正确的实例化、初始化。这样的话,便不需要确认测试本身是否有误,因为测试的先决条件已经发生了错误。依照惯例,用于验证先决条件的方法被称为testPreconditions().

例如:

public void testPreconditions() {
    assertNotNull(“mFirstTestActivity is null”, mFirstTestActivity);
    assertNotNull(“mFirstTestText is null”, mFirstTestText);
}

其中的判断方法来自于JUnit的Assert类。通常情况下可以使用这些判断方法来验证需要测试的指定条件是否为true。
- 如果条件为false,那么判断方法会抛出一个AssertionFailedError异常。该异常由TestRunner抛出。如果判断失败,那么可以通过判断方法的第一个参数得知是哪个条件失败。
- 如果条件为true,那么测试会顺利执行。

在这两种情况中,TestRunner会继续执行其它的判断方法。

添加测试方法

接下来,添加测试方法来验证Activity的布局与功能。

例如,如果Activity包含了一个TextView,你可以像下面这样添加一个测试方法来验证该TextView的文本是否正确:

public void testMyFirstTestTextView_labelText() {
    final String expected =
            mFirstTestActivity.getString(R.string.my_first_test);
    final String actual = mFirstTestText.getText().toString();
    assertEquals(expected, actual);
}

testMyFirstTestTextView_labelText()方法用于检测TextView的默认文本与定义在string.xml中的文本是否一致。

Note: 当命名测试方法时,可以使用下划线来分开要测试的内容,这种编写风格可以更容易明确测试的内容。

要执行比较,将期望的值与实际的值传给assertEquals()方法。如果两个值不相等,那么将会抛出一个AssertionFailedError异常。

如果添加testPreconditions()方法,那么请将测试代码放在testPreconditions()之后。

构建运行测试

在Eclipse中进行代码测试非常容易。

请执行以下步骤:
1.将Android设备连接到计算机。打开Setting菜单,选择Developer选项,并确保USB调试模式已开启。
2.在测试的类中选择RunAs > Android Junit Test.
3.在Android设备选择对话框中,选择刚刚连接好的设备,点击OK。
4.在JUnit界面中,验证测试是否通过。

目录
相关文章
|
1月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
212 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
5月前
|
算法 数据处理 Android开发
掌握安卓性能优化的秘诀:电池寿命与运行效率的提升
【10月更文挑战第6天】 本文深入探讨了安卓应用开发中的性能优化技巧,重点分析了影响电池寿命和运行效率的关键因素,并提供了针对性的优化策略。通过代码优化、资源管理、后台任务处理等方法,开发者可以显著提升应用的续航能力和流畅度。同时,结合具体案例,展示了如何在实际开发中应用这些技巧,确保应用在各种场景下都能保持高效运行。本文旨在为安卓开发者提供实用的性能优化指导,助力其打造更优质的应用体验。
147 2
|
5月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
136 6
|
5月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
51 3
|
5月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
48 3
|
5月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
43 0
|
Java 测试技术 API
Android测试工具 UIAutomator入门与介绍(上)
  UI Automator 测试工具定义以及用途
Android测试工具 UIAutomator入门与介绍(上)
|
Java Shell 测试技术
Android测试工具 UIAutomator入门与介绍(下)
  UI Automator 测试工具定义以及用途
|
存储 安全 Shell
Android 渗透测试学习手册 第一章 Android 安全入门
第一章 Android 安全入门 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 Android 是当今最流行的智能手机操作系统之一。
1582 0

热门文章

最新文章