android测试

项目源码:https://github.com/yu75567218/SPH

获得context的方法

不能直接获得context,通过Instrumentation获取。
首先需要在我们工程的build.gradle中添加如下配置:

android {
    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

这里实际上只做了一件事情,就是为我们的工程指定一个TestInstrumentationRunner,TestInstrumentationRunner是用来跑我们所写的所有的测试用例的。当我们采用test的模式来构建工程时,这个Runner便会自动为我们执行所有的的测试用例,并且返回相应的测试结果。
另外,我们还需要在build.gradle中增加instrumentation testing所需要的依赖:

dependencies {
    androidTestCompile 'com.android.support:support-annotations:23.1.1'
    androidTestCompile 'com.android.support.test:runner:0.4.1'
    androidTestCompile 'com.android.support.test:rules:0.4.1'
}

现在可以获取context了。

InstrumentationRegistry.getInstrumentation().getContext()

创建代码覆盖率报告

代码覆盖率报告将显示你的应用程序代码有多少被测试覆盖.创建该测试报告需要你创建一个单独的启动配置. 选中需要创建报告的包右击选择 Create Test in …,下一步选择“OK”,运行测试覆盖率
在这里插入图片描述生成结果:
android测试_第1张图片

room数据库测试

一开始我跟项目中使用room一样,然后出现异常:

Could not open database

折腾了很久都不行,然后发现了官方文档有测试方法:Android Room 官方指南
这个事情告诉我们,一些框架的测试方法要注意去官方查看文档。
但是在使用数据库异步回调的时候还是会出现问题,这里切换线程,切换到主线程就是了:

dataDao.getAllBeanYears()
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer>() {
            @Override
            public void accept(List beanYears) throws Exception {
                Assert.assertEquals(beanYears.size(), 1);
            }
        });

参考:
Android单元测试只看这一篇就够了
Android Studio中使用junit做单元测试
Android自动化测试-从入门到入门(1)Hello Testing!
Instrumentation测试进阶

你可能感兴趣的:(android学习)