Android Test 简单总结

用Android studio可以很方便的完成代码的测试工作,比之前在Eclipse里面做测试方便多了,下面简单总结一下:
一、创建测试目录结构:
一般在工程根目录下创建androidTest文件夹,里面按照src包名结构创建目录,然后就可以创建测试文件了,如图:

Android Test 简单总结_第1张图片

也可以在module的build文件进行指定测试路径:
        androidTest {
            java.srcDirs = ['androidTest/java']
            assets.srcDirs = ['androidTest/assets/']
        }


二、创建测试文件:
新建XXXTest.Java,一般继承InstrumentationTestCase。
里面方法命名要注意,测试用例必须要以test开头,如果你要控制执行顺序,需要在test后面加有序的数字或字母,在执行的时候会按命名顺序执行,如:test1Query(),test2Insert()等等;

public class UtilsTest extends InstrumentationTestCase {

    public void test1() throws Exception {
        assertTrue(Utils.isValidUrl("http://www.qq.com"));
        assertTrue(Utils.isValidUrl("www.qq.com/news?a=1"));
        assertFalse(Utils.isValidUrl("http://*.qq.com"));
        assertTrue(Utils.isValidUrl("http://www.qq.com/?a=1"));
        assertTrue(Utils.isValidUrl("www.qq.com:80"));
        assertTrue(Utils.isValidUrl("http://www.qq.com:80/news"));
        assertTrue(Utils.isValidUrl("www.qq.com/news"));
        assertTrue(Utils.isValidUrl("ftp://www.qq.com/news"));
        assertTrue(Utils.isValidUrl("ftp://www.qq/news")); // We can't judge that whether the domain suffix is valid.
    }

    public void test2() throws Exception {
        String[][] hosts =
                {{"baidu.com", "http://baidu.com/?v=1"},
                        {"qq.com", "https://qq.com/?v=1"},
                        {"qq.com", "ftp://qq.com/?v=1"},
                        {"qq.com:80", "https://qq.com:80/?v=1"}
                };

        for (int i = 0; i < hosts.length; i++) {
            assertEquals(hosts[i][0], Utils.extractHost(hosts[i][1]));
        }
    }

    public void test3() throws Exception {
        assertTrue(Utils.isValidRedirectUrl("http://www.qq.com"));
        assertTrue(Utils.isValidRedirectUrl("https://www.163.com"));
    }
}


三、注意事项:
如果要测试的接口里面有线程,一般以回调的方式展示,这时候要注意让测线程等待,否则测试主线程会提前退出,导致测试失败,可以用下面方法控制:
    Object queryLock = new Object();

    private void waitProcessing(){
        try{
            synchronized (queryLock){
                queryLock.wait();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    private void notifyProcessing() {
        synchronized (queryLock) {
            queryLock.notify();
        }
    }


四、运行:
运行整个测试用例,只需要在需要在文件上右键->run即可
运行单个case,在对应的方法中点击,右键->run即可;

你可能感兴趣的:(android)