Android Studio 单元测试,(单元,单元,就是某一个部分的测试)

0: 单元测试的目的就是测试一个方法的所有的可能值(换句话说:验证输入的内容是否能够得到期望的输出的结果,也就是方法的功能的覆盖测试)
继承TestCase 就可以自动进行测试了



1:创建我们要测试的类:
package com.example.administrator.unittestdemo;


/**
 * Created by Administrator on 2016/7/25.
 */
public class UtilsClass {


    /*获取一个字符串的前两个字符,
    * 如果是为null 就回复空
    * 如果是长度为1,就返回“长度为1”
    * 如果是长度大于等于2,那么就返回前两个字符
    * */
    public String getFirstTwoString(String str){
        String ret;
        if(str==null){
            return "空";
        }else{
            if(str.length()==1){
                return "长度为1";
            }else{
                return str.substring(0,2);
            }
        }
    }


    public static int max(int a,int b){
        return a>b?a:b;
    }
}



2:创单元测试的类:


选择以 Android 的形式来展示代码
然后找到(anroidTest)注释的文件夹,在这里创建测试类
测试的类里面的每一个测试的测试方法,都是以要测试的测试方法结尾,前面加上test,例如这里是testGetFirstTwoString()


如果测试的方法是静态的方法,可以直接使用类来调用,
    public void testMax(){
        //max方法是static修饰的静态的方法,可以直接通过类名来调用
        int max = UtilsClass.max(1, 2);
        assertEquals(max,2);
    }

如果测试的方法是类方法,非静态方法,需要创建被测试的类的对象来调用
    public void testGetFirstTwoString(){
        //getFirstTwoString是类方法不是static修饰的静态方法,所以要用对象来访问
        UtilsClass utilsClass = new UtilsClass();
        String result =utilsClass.getFirstTwoString(null);
        assertNotNull(result);//断言不为空


        result =utilsClass.getFirstTwoString("h");
        assertNotNull(result);//断言不为空
        assertEquals(result,"长度为1");//断言是否相等


        result =utilsClass.getFirstTwoString("hello");
        assertNotNull(result);//断言不为空
        assertEquals(result,"he");//断言是否相等


        result =utilsClass.getFirstTwoString("he");
        assertNotNull(result);//断言不为空
        assertEquals(result,"he");//断言是否相等




        result =utilsClass.getFirstTwoString("h");
        assertNotNull(result);//断言不为空
        //这里会失败
        assertEquals(result,"he");//断言是否相等
    }


通过assertNotNull和assertEquals()这里两个方法来判断返回的结果是否是我们想要的


完整代码:
package com.example.administrator.unittestdemo;


import junit.framework.TestCase;


/**
 * Created by Kodulf on 2016/7/25.
 * 继承TestCase 就可以自动进行测试了
 */
public class UtilsClassTest extends TestCase{
    /**
     * 单元测试固定的方法命名规则:
     * public void testXxxxXXX()形式
     * 其中XxxXxx就是要测试的方法的名称
     * 把这个名称首字母大写,一定要注意必须要以test开头
     */


    public void testMax(){
        //max方法是static修饰的静态的方法,可以直接通过类名来调用
        int max = UtilsClass.max(1, 2);
        assertEquals(max,2);
    }


    public void testGetFirstTwoString(){
        //getFirstTwoString是类方法不是static修饰的静态方法,所以要用对象来访问
        UtilsClass utilsClass = new UtilsClass();
        String result =utilsClass.getFirstTwoString(null);
        assertNotNull(result);//断言不为空


        result =utilsClass.getFirstTwoString("h");
        assertNotNull(result);//断言不为空
        assertEquals(result,"长度为1");//断言是否相等


        result =utilsClass.getFirstTwoString("hello");
        assertNotNull(result);//断言不为空
        assertEquals(result,"he");//断言是否相等


        result =utilsClass.getFirstTwoString("he");
        assertNotNull(result);//断言不为空
        assertEquals(result,"he");//断言是否相等




        result =utilsClass.getFirstTwoString("h");
        assertNotNull(result);//断言不为空
        //这里会失败
        assertEquals(result,"he");//断言是否相等
    }

}



3:运行
右击UtilClassTest
点击Create UtilClassTest
在界面中选择 All in Module,然后确定
然后在我们平时运行的列表里面旁边会多一个CryptUtilTest。
点击运行
这个是没有界面
点击下面的Message 旁边的Run 



4: 修改运行的参数来运行 单元测试里面的某一个方法
点击运行按钮左边的“UtilsClassTest”
在弹出的下拉菜单中,选择,“Edit Configurations。。。”
然后再左边的列表点击Android Tests 下面的UtilsClassTest,现在右边的列表变成了UtilsClassTest运行的参数了
在Test这一栏里面,我们可以选择class,来指定类,通过Method 来指定我们需要测试运行的方法,例如这里我们可以选择testMax



你可能感兴趣的:(2,项目框架结构编码规范)