场景: 1.app集成功能很多的时候,验证某一个功能是否正确,可以单独测试该功能的业务逻辑部分代码接口,而不必启动整个程序进行验证。
2.在底层接口和界面进行交互的时候,可以很方便界面对接口数据的匹配。
3.不知原因造成的bug,找了很久找不错问题所在,可以很快找出是底层接口还是界面的问题,大大缩小问题的范围。
单元测试的好处
我们在做app的时候,做好一个功能,通常绝大部分人都会直接在界面显示数据来判断该功能是否实现,或者是我们期望的。做单个功能这样验证不会耗费太多的时间,但是当我们做的功能越来越多的时候,要验证某一个功能,还启动程序界面来验证,这样就太耗费时间了。单元测试可以很好的解决这个问题,我们只需要把要测的功能直接加入到单元测试中就可以了,运行单元测试,直接就验证该功能,大大的减少时间的浪费。还有我们在做功能的时候,业务逻辑部分代码接口做好了单元测试,那么在与界面交互的时候就很方便匹配数据了。如果程序由于不知道的原因造成bug,我们还可以通过单元测试来排查是底层接口出错,还是界面的问题。使用单元测试的好处还有很多,这里就不多做介绍了,下面我们看看怎么做单元测试。
在Android Studio中可以进行单元测试
刚刚开始用Android Studio做单元测试,发现网上有很多的文章指导你应该在“build.gradle” 文件里面添加几行代码从而允许单元测试,并且告诉你应该在项目依赖中添加Android测试库。其实Android Studio在创建项目的时候已经帮我们把单元测试的环境配置好了,本身就支持Android单元测试,我们肯定就不需要在build.gradle文件中做其他操作,只需要在项目中创建我们做单元测试所需要的类就可以了,下面是单元测试的示例。
创建你的单元测试文件夹
为了更加方便的管理代码,我们可以把单元测试类创建在与Android Studio默认的ApplicationTest类相同的路径下面;或者自己建立一个”test“目录,把单元测试类创建在test目录下。
下面我们以创建MyTest为例,首先创建一个单元测试类“MyTest”,可以分别继承InstrumentationTestCase和AndroidTestCase
package com.example.administrator.androidapplication;
import android.test.InstrumentationTestCase;
import android.test.AndroidTestCase;
/**
* Created by Administrator on 2016/2/22.
*/
//MyTest分别可以继承InstrumentationTestCase和AndroidTestCase
public class MyTest extends AndroidTestCase {
public void testAdd() throws Exception
{
int a =5,b =3;
int c =a+b;
assertEquals(8,c);
}
public void testSub()
{
int a =23,b =8;
int sub =a-b;
assertEquals(15,sub);
}
public void testBool()
{
assertEquals(true,false);
assertEquals(true,true);
}
public void testString()
{
assertEquals("hello","hello");
}
public void testNotObject()
{
String str =null;
assertNotNull(str);
assertNull(str);
}
public void testObject()
{
String obj1 ="object1";
String obj2 ="object1";
assertSame(obj1,obj2);
assertNotSame(obj1,obj2);
}
注意:所有的测试方法必须以"test"开头,否则Android Studio不能找到要进行单元测试的方法,你将会得到各种各样的错误,并且无法正常执行。
运行单元测试类
选中MyTest单元测试类(网上很多文章对单元测试类在Run/Debug Configurations进行添加单元测试设置,然后在运行Run,我们这里就一步到位,效果也是一样的,减少一些配置步骤)
测试结果:
通过控制台Run工具项窗口的输出,我们可以看到单元测试出错的地方,我们可以把断言失败的地方进行修改,如注释
// assertEquals(true,false);则单元测试可以测试通过了。// assertNotNull(str);
// assertNotSame(obj1,obj2);
注意:
进度条显示红色,则表示单元测试失败。
进度条显示绿色,则表示单元测试成功。
以上就是Android Studio的单元测试。