单元测试,是只对软件中的最小可测试单元进行检查和验证。
单元测试的必要性
1、作为开发者,必须要对自己的代码负责,要代码逻辑严谨,保证代码的质量。一般来说,单元测试是开发者的责任。
2、单元测试用例必须不断积累。为什么这么说,在没有重视这块之前,很多开发者会在程序里面写一段测试代码,测试完了之后删除掉了,以后再测试的时候,又要写一遍。这种重复的行为必然浪费了不少时间。
3、执行单元测试用例比在代码中写测试代码执行速度快,如果在代码中写测试代码需重新跑程序,这肯定是比较慢的。
4、修改了代码之后,确保对之前的逻辑没有影响。这是跑一遍之前的有关测试用例,如果测试都通过了,说明修改是ok的,否则修改是有问题的。而且这种的兼容性测试很快,相当于自动化测试了,可以大大节省时间。
Android Studio中的单元测试
在Android Studio中可以针对每个module,在src下建立androidTest,test目录用于单元测试,如图:
Android Studio测试目录
androidTest用来测试涉及到android API,android 上下文环境的接口或函数,跑起来需要真机或者模拟器。
test用来测试java代码,只是本地测试,不需要真机或模拟器。在build gradle需要添加依赖
testCompile 'junit:junit:4.12'如何写单元测试用例
一、AndroidTest
1、androidTest 需要定义一个类继承AndroidTestCase,如下:
定义测试类
2、重写setUp()方法,可用于配置参数环境。
3、重写tearDown()方法,测试用例执行完,可以在这做处理。
4、定义一个类继承RequestTest, 执行具体的测试,测试函数必须以test开头,如下:
具体测试方法
5、执行测试用例,在方法名上,右键--run testQuoteRequest(举例)。如下:
执行测试用例
之后就可在菜单栏 选中testQuoteRequest 点击 run按钮运行。
6、结果,如图:测试通过,可在logcat查看相关打印信息。
结果
7、需要注意的是,我这里测试的是网络请求,以及打印数据。测试用例所在的线程会执行很快,但网络请求的线程还没结束,当测试用例所在线程执行完后,网络请求的线程会立马终止,不会有任何数据回来,所以我在tearDown方法sleep了10s。
二、test
流程同上,只是不需要继承其他类,在每个测试方法加上Test注解,如图:
本地测试用例
总结
本次只是简单的执行单个测试,批量测试也是可以的,后续在进行相关的总结。