Android进阶之路 - Java 单元测试

发布时间 2023-04-26 16:21:59作者: cps666

在此之前,我在单元测试的时候,往往会单独创建一个Demo去进行功能实现,这俩天正好闲下来,所以快速的掌握了一下这个知识点,挺简单的,下面看图说话,看完你就出师了

Look here ~ :此文讲的并不高深,扩展也有限,我的目的仅仅是初步且快速的掌握单元测试使用方式,从而提升自己的开发效率 ~

单元测试

需注意该篇单元测试仅适用于Java单元测试,如需Kotlin单元测试,可前往 Kotlin进阶指南 - 单元测试

      • 初识步骤
        • 1. 创建项目,识别每个包的作用
        • 2. 选取对应包名下的类名,点击左侧的 Structure(结构)
        • 3. 查看当前选取测试类的内部方法,这里的aaa()是我自己进行测试一个方法
        • 4. 选取对应方法Run起来
        • 5. 运行通过,我是Logcat进行结果查询
      • 写一个自己的单元测试
        • 1. 在单元测试包下,创建我们自己的Test类(注意图中的俩处注解)
        • 2. 老方法,Run起来
      • 温馨提示
        • 单元测试的选择区间
        • androidTest 与 test 区别
        • 你该注意的那些事项

初识步骤

1. 创建项目,识别每个包的作用

这里写图片描述

2. 选取对应包名下的类名,点击左侧的 Structure(结构)

这里写图片描述

ExampleInstrumentedTest (我们要单元测试的类)

package com.dow.yongliu.unittext;

import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.util.Log;

import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.*;

/**
 * Instrumented test, which will execute on an Android device.
 * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
 */
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
    @Test
    public void useAppContext() throws Exception {
        // Context of the app under test.
        Context appContext = InstrumentationRegistry.getTargetContext();

        assertEquals("com.dow.yongliu.myapplication", appContext.getPackageName());
    }

    @Test
    public void aaa(){
        Log.e("tag","测试方法执行完毕");
    }
}

3. 查看当前选取测试类的内部方法,这里的aaa()是我自己进行测试一个方法

这里写图片描述

4. 选取对应方法Run起来

这里写图片描述

5. 运行通过,我是Logcat进行结果查询

这里写图片描述

写一个自己的单元测试

1. 在单元测试包下,创建我们自己的Test类(注意图中的俩处注解)

这里写图片描述

2. 老方法,Run起来

这里写图片描述

温馨提示

上图的每个方法Run后的结果都是正确的,只是图片有一丢丢的模糊

单元测试的选择区间

项目初建时给了我们俩个测试途径包,一个是androidTest,一个是test ~

如不理解,请看下图

这里写图片描述

androidTest 与 test 区别

使用而言,俩者的注解方式不同,但是更多的我们要看一下他们的使用场景;具体原因可看下方的注意事项

  • androidTest 包内的单元测试依赖于手机,也作用于手机,往往需要侧重于Android方面的单元测试
  • test 包内的单元测试,更多的是用于查看某个单独方法的运行结果

你该注意的那些事项

在较早的一篇博文中,有这样的一段话:Build Variants 的选择很重要,如果选择 Unit TestsAndroid的测试用例就会不被识别,反之Java的测试用例不被识别,所以在跑测试用例时一定选对标签

  • 测试类一定要在 androidTest 或 test 文件夹下
  • 写自己的方法时候,一定要声明 public 权限
  • androidTest 下的 测试类一定要在类名上方 加入注解 @RunWith(AndroidJUnit4.class) 或者 @RunWith(JUnit4.class) ,同时内部方法上 加入注解 @Test
  • test 下的测试类,无需注解,只需再测试方法加入注解 @Test