前言
本篇文章是记录自己在项目开发中进行单元测试时,学习的junit4
相关的一些知识,整理一下,以便以后查阅,如有不对的地方,还忘大家指正。
下文中提到的AS,是指Android studio
目录
- 对单元测试的理解
- 在android环境中创建单元测试类
- 注解
- 断言的使用
- 参考
对单元测试的理解
在我看来单元测试,就是去验证每一小块代码的结果是否达到自己的预期。但是在验证前,要把条件准备妥当才能进行验证流程。我们举一个简单例子:
1 | public int getSummation(int a,int b){ |
一个很简单的求和的方法,调用这个方法,假如传入的参数分别是1
和2
,我们预期的结果一定是3
,如果返回的是非3
的数字,那说明这个方法是有问题的。上面这个方法的单元测试按上面思路就这么写:
1 | @Test |
项目中的其他有返回的方法也是按这种思路来进行验证,有了上面这个思路,接下来看看在android
中如何利用junit4
来进行单元测试。
在android环境中创建单元测试类
在用AS
创建的项目的时候,默认在build.gradle
中已经引入了junit4
所以不用再另外添加依赖,那应该怎么写呢?我们还用上面的例子来举例:
1 | public class Math { |
想要测试getSummation
方法,在AS
中
getSummation
方法在Math
类里面
- 注解
1 | /* |
- 断言
预测被测试方法的结果,可判断函数的正确性
assertArrayEquals(expecteds, actuals) 查看两个数组是否相等。
assertEquals(expected, actual) 查看两个对象是否相等。类似于字符串比较使用的equals()方法
assertNotEquals(first, second) 查看两个对象是否不相等。
assertNull(object) 查看对象是否为空。
assertNotNull(object) 查看对象是否不为空。
assertSame(expected, actual) 查看两个对象的引用是否相等。类似于使用“==”比较两个对象
assertNotSame(unexpected, actual) 查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象
assertTrue(condition) 查看运行结果是否为true。
assertFalse(condition) 查看运行结果是否为false。
assertThat(actual, matcher) 查看实际值是否满足指定的条件
fail() 让测试失败
- 测试套件(Runwith的使用)
使用测试套件可以同时运行多个单元测试类,有以下几个特点:1、写一个作为测试套件的入口类,这个类里不包含其他的方法
2、更改测试运行器Suite.class
3、将要测试的类作为数组传入到Suite.SuiteClasses({})
代码示例如下:
1 | /** |
- 参数化设置(Runwith的使用)
设置参数可以使被测方法,一次运行测试多套参数,减少代码量,具体的步骤如下:
1.更改默认的测试运行器为RunWith(Parameterized.class)
2.声明变量来存放预期值 和结果值
3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰
4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
代码示例:
1 | @RunWith(Parameterized.class) |