Android进阶之路 - Java 单元测试
在此之前,我在单元测试的时候,往往会单独创建一个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 Tests
,Android的测试用例就会不被识别,反之Java的测试用例不被识别
,所以在跑测试用例时一定选对标签
- 测试类一定要在
androidTes
t 或test
文件夹下 - 写自己的方法时候,一定要声明
public
权限 androidTest
下的 测试类一定要在类名上方 加入注解@RunWith(AndroidJUnit4.class)
或者@RunWith(JUnit4.class)
,同时内部方法上 加入注解@Test
test
下的测试类,无需注解,只需再测试方法加入注解@Test