什么是单元测试
单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
为什么要单元测试
我们编写代码时,一定会反复调试保证它能够编译通过。如果是编译没有通过的代码,没有任何人会愿意交付给自己的老板。但代码通过编译,只是说明了它的语法正确;我们却无法保证它的语义也一定正确,没有任何人可以轻易承诺这段代码的行为一定是正确的。
幸运的是,单元测试会为我们的承诺做保证。编写单元测试就是用来验证这段代码的行为是否与我们期望的一致。有了单元测试,我们可以自信的交付自己的代码,而没有任何的后顾之忧。(来自360百科)
使用Android Studio进行单元测试
在Android Studio中进行单元测试并不需要什么插件或者过多的配置,Android Studio本身就集成了测试环境,无论是单纯的java代码单元测试还是依赖Android SDK的Android代码单元测试都可以。
(一) 在建立一个项目的时候,默认已经建立了测试例子。结构如下:
分析一下:
(1)androidTest这个文件夹里的测试类主要是对android的例子进行单元测试。需要运行于设备之上。
(2)test这个文件夹的测试类主要对java的例子进行单元测试,无需运行于设备之上。
(二)你的gradle中加入Junit的依赖,注意这里的依赖方式是测试期间的依赖(testCompile):(如下图)
(三)开始例子编写了:
(1)编写java用例。
我们简单分析一下它自动生成的一个示范例子:
1、在写Java单元测试的时候一定要写@Test这个Junit的注解才可以跑得正确哦。
2、assertEquals这个函数是验证期待值与实际值的等同性函数而已(后面会有其它复杂的验证)。
3、跑起来验证是否成功。右键选择测试类ExampleUnitTest,run(如图)
4、看一下结果(成功如下图)
5、举一下失败例子(代码与结果如下图)
期待值是3,然而实际值是4哦。
6、继续失败例子(代码与结果如下图)
为什么会这样子呢?因为用了Android的代码,所以这样子了,这就引出我们的Android测试例子。
(2)Android例子
1、在androidTest里建立一个TestApp类InstrumentationTestCase
2、编写一个public void的方法,但是必须要是方法名以test打头,比如testJust,并不需要@Test注解。(代码与结果如下图,请注意使用Android studio的自带单元测试运行Android 测试类需要设备哦)
选择测试类右键run.
3、举一个失败例子,没有以test开头的方法,(代码与结果如下图)
木有找到测试方法。
4、我们试一下期待值与真实值不同的例子。
里面写着期待值是1,但是结果是2.
5、如果我写两个测试方法在同一个类结果如何?我写了一个失败的测试方法,一个成功的测试方法(如下图代码与结果)。
结果显示一个通过,一个不通过。
代码地址如下:
http://pan.baidu.com/s/1c2E4BUo