Android测试教程(9):ApplicationTestCase示例
来源:互联网 发布:java两个字符串比较 编辑:程序博客网 时间:2024/04/29 20:55
前面介绍了Android测试的一些理论知识,从本篇开始的几篇将结合ApiDemoTest示例来介绍Android测试的实例。在此之前可以参照Android测试教程(3):测试项目 创建ApiDemos->tests 测试项目,本项目测试用来测试ApiDemos,主要目的是介绍Android测试框架的使用方法。
当然要测试ApiDemos,事先要创建好项目ApiDemos。下图显示了创建好ApiDemos->Tests后,ApiDemos->Tests中所含的Java类:
Android测试项目也是一个Android应用项目,其基本使用方法和开发一般的Android应用非常类似,Android测试项目主要是利用Android测试框架编写测试用例来测试对应的Android应用的各个方面。
其中AllTests.java 定义如下:
- public class AllTests extends TestSuite {
- public static Test suite() {
- return new TestSuiteBuilder(AllTests.class)
- .includeAllPackagesUnderHere()
- .build();
- }
- }
使用TestSuiteBuilder 指明所有该包和其子包中定义的TestCase都为最终TestSuite 的一部分(需要被运行的测试)。
AllTests.java 一般可以不用修改的应用到大部分的测试项目中,如果有特殊需要,可以使用android.test.suitebuilder 的类定义那些Testcase 需要包含到最终的测试包(Test Suite)中.
ApiDemosApplicationTests 测试介绍ApplicationTestCase的基本使用方法。
下图为ApplicationTestCase 的继承关系:
ApplicationTestCase 主要用来测试Application 类,提供了对Application类生命周期方法的基本支持,并可以支持一些dependency injection 以帮助构造测试Application的的环境。
Application Lifecycle 支持, 每个Application运行 都遵循一定的顺序(生命周期方法),ApplicationTestCase提供下面方法来支持对Application生命周期方法的测试:
- 只有当测试用例调用createApplication()后才会执行Application 的onCreate 方法,从而使得你有机会在调用Application的onCreate方法之前对测试框架做些调整。
- 当测试用例结束时,测试用例的tearDown 方法会被调用,然后会调用Application 的onDestroy()方法停止和销毁Application.
Dependency Injection 每个Application都依赖于运行它的Context 对象,Android测试框架允许你注入一个Mock的或者孤立的context 对象,以实现真正的单元测试,如果只是想做一般的测试,你的Application方法将被注入全功能的Context对象,你可以使用setContext 来注入你定义的Mock 的Context对象,setContext 必须在createApplication 之前调用。测试框架提供了如MockContext, RenamingDelegatingContext, ContextWrapper 来帮助你构造用于测试Applicaton的Context对象。
本例的代码如下:
- public class ApiDemosApplicationTests
- extends ApplicationTestCase<ApiDemosApplication> {
- public ApiDemosApplicationTests() {
- super(ApiDemosApplication.class);
- }
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
- @SmallTest
- public void testPreconditions() {
- }
- /**
- * Test basic startup/shutdown of Application
- */
- @MediumTest
- public void testSimpleCreate() {
- createApplication();
- }
- }
有几个新知识
1. @SmallTest 和@MediumTest标注
Android测试框架可以使用@SmallTest,@MediumTest和@LargeTest 来标注测试方法,这些分类划分主要是根据测试访问数据的位置,如本地,SD卡,网络,下表为通常划分测试等级的基本方法:
FeatureSmallMediumLargeNetwork accessNolocalhost onlyYesDatabaseNoYesYesFile system accessNoYesYesUse external systemsNoDiscouragedYesMultiple threadsNoYesYesSleep statementsNoYesYesSystem propertiesNoYesYesTime limit (seconds)60300900+2. testPreconditions
testPreconditions 测试主要用来运行其它测试方法之前来校验Application 对象的初始化情况,和setUp类似,但和setUp 不同的是,testPreconditions只会被运行一次,而setUp通常在执行每个测试方法之前都会运行一次,一般需把它做为Application第一个测试方法,但由于JUnit使用Reflection 来取得测试方法,因此并不一定能保证testPreconditions一定在其它测试方法之前运行。
testSimpleCreate 为测试Application 的测试方法,调用createApplication 会触发Application 的onCreate 方法,测试结束后,执行tearDown ,然后调用Application 的onDestroy 方法,如果Application 的onCreate, onDestroy 运行抛出异常的话,则本测试方法失败,否则表示测试通过。
ApplicationTestCase 还提供了一个terminateApplication 中止Application,可以测试Application 的onTerminate 方法
- Android测试教程(9):ApplicationTestCase示例
- Android测试教程(9):ApplicationTestCase示例
- Android测试教程(9):ApplicationTestCase示例
- Android ApplicationTestCase示例
- Android测试教程(10):ActivityInstrumentationTestCase2示例
- Android测试教程(11):ActivityUnitTestCase示例
- Android测试教程(12):ServiceTestCase示例
- Android测试教程(13):TestCase示例
- Android测试教程(14):ActivityInstrumentationTestCase2示例
- Android测试教程(15):AndroidTestCase示例
- Android测试教程(10):ActivityInstrumentationTestCase2示例
- Android测试教程(11):ActivityUnitTestCase示例
- Android测试教程(12):ServiceTestCase示例
- Android测试教程(13):TestCase示例
- Android教程示例BitmapFun分析
- Android教程示例BitmapFun分析
- Android教程示例BitmapFun分析
- Android教程示例BitmapFun分析
- UIWebView的一些用法总结
- 双机热备典型应用
- Button的onTouch,onClick,onLongClick事件发生先后顺序和关联
- Spark读取配置
- 监理工程师岁月--甲乙丙方的斗智斗勇
- Android测试教程(9):ApplicationTestCase示例
- 数据库范式解析
- 访问权限
- Python程序的执行原理
- Cordova4.0 系列 -- 常用命令(2)
- SELinux 关闭重启方法
- Unicode编码完全探究(三)之联通乱码
- JAVA泛型和strictfp关键字说明,泛型还没明白
- js ==与===区别(两个等号与三个等号)