基本用法可以参考CSDN博主「川峰」的原创博客
https://blog.csdn.net/lyabc123456/article/details/89363721
下面仅针对junit作部分摘要:
一、Android单元测试主要分为以下两种:
-
本地单元测试(Junit Test), 本地单元测试是纯java代码的测试,只运行在本地电脑的JVM环境上,不依赖于Android框架的任何api, 因此执行速度快,效率较高,但是无法测试Android相关的代码。
-
仪器化测试(Android Test),是针对Android相关代码的测试,需要运行在真机设备或模拟器上,运行速度较慢,但是可以测试UI的交互以及对设备信息的访问,得到接近真实的测试结果。
在Android Studio中新建一个项目的时候,app的gradle中会默认添加单元测试的相关依赖库:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
其中testImplementation添加的依赖就是本地化测试库,
androidTestImplementation 添加的依赖则是Android环境下的测试库
二、本地单元测试
进行本地单元测试需要先了解一些基本的Junit注解:
注解名称 | 含义 |
---|---|
@Test | 定义所在方法为单元测试方法,方法必须是public void |
@Before | 定义所在方法在每个测试用例执行之前执行一次, 用于准备测试环境(如: 初始化类,读输入流等),在一个测试类中,每个@Test方法的执行都会触发一次调用 |
@After | 定义所在方法在每个测试用例执行之后执行一次,用于清理测试环境数据,在一个测试类中,每个@Test方法的执行都会触发一次调用。 |
@BeforeClass | 定义所在方法在测试类里的所有用例运行之前运行一次,方法必须是public static void,用于做一些耗时的初始化工作(如: 连接数据库) |
@AfterClass | 定义所在方法在测试类里的所有用例运行之后运行一次,方法必须是public static void,用于清理数据(如: 断开数据连接) |
@Test (expected = Exception.class) | 如果该测试方法没有抛出Annotation中的Exception类型(子类也可以),则测试失败 |
@Test(timeout=100) | 如果该测试方法耗时超过100毫秒,则测试失败,用于性能测试 |
@Ignore 或者 @Ignore(“太耗时”) | 忽略当前测试方法,一般用于测试方法还没有准备好,或者太耗时之类的 |
@FixMethodOrder | 定义所在的测试类中的所有测试方法都按照固定的顺序执行,可以指定3个值,分别是DEFAULT、JVM、NAME_ASCENDING(字母顺序) |
@RunWith | 指定测试类的测试运行器 |
Assert类中的常用断言方法
方法 | 含义 |
---|---|
assertNull(Object object) | 断言对象为空 |
assertNull(String message, Object object) | 断言对象为空,如果不为空抛出异常携带指定的message信息 |
assertNotNull(Object object) | 断言对象不为空 |
assertNotNull(Object object) | 断言对象不为空,如果为空抛出异常携带指定的message信息 |
assertSame(Object expected, Object actual) | 断言两个对象引用的是同一个对象 |
assertSame(String message, Object expected, Object actual) | 断言两个对象引用的是同一个对象,否则抛出异常携带指定的message信息 |
assertNotSame(Object expected, Object actual) | 断言两个对象引用的不是同一个对象 |
assertNotSame(String message, Object expected, Object actual) | 断言两个对象引用的不是同一个对象,否则抛出异常携带指定的message信息 |
assertTrue(boolean condition) | 断言结果为true |
assertTrue(String message, boolean condition) | 断言结果为true, 为false时抛出异常携带指定的message信息 |
assertFalse(boolean condition) | 断言结果为false |
assertFalse(String message, boolean condition) | 断言结果为false, 为true时抛出异常携带指定的message信息 |
assertEquals(long expected, long actual) | 断言两个long 类型 expected 和 actual 的值相等 |
assertEquals(String message, long expected, long actual) | 断言两个long 类型 expected 和 actual 的值相等,如不相等则抛异常携带指定message信息 |
assertEquals(Object expected, Object actual) | 断言两个对象相等 |
assertEquals(String message, Object expected, Object actual) | 断言两个对象相等,如果不相等则抛出异常携带指定的message信息 |
assertEquals(float expected, float actual, float delta) | 断言两个 float 类型 expect 和 actual 在 delta 偏差值下相等,delta是误差精度 |
assertEquals(String message, float expected, float actual, float delta) | 断言两个 float 类型 expect 和 actual 在 delta 偏差值下相等,如果不相等则抛出异常携带指定的message信息 |
assertEquals(double expected, double actual, double delta) | 断言两个 double 类型 expect 和 actual 在 delta 偏差值下相等 |
assertEquals(String message, double expected,double actual, double delta) | 断言两个 double 类型 expect 和 actual 在 delta 偏差值下相等,如果不相等则抛出异常携带指定的message信息 |
assertArrayEquals(T[] expected, T[] actual) | 断言两个相同类型的数组的元素一一对应相等 |
assertArrayEquals(String message, T[] expected, T[] actual) | 断言两个相同类型的数组的元素一一对应相等,如果不相等则抛出异常携带指定的message信息 |
fail() | 直接让测试失败 |
fail(String message) | 直接让测试失败并给出message错误信息 |
assertThat(T actual, Matcher<? super T> matcher) | 断言actual和matcher规则匹配 |
assertThat(String reason, T actual, Matcher<? super T> matcher) | 断言actual和matcher规则匹配,否则抛出异常携带指定的reason信息 |
网友评论