Service Test1
源码下载(免下载积分):下载
简述:测试Service使用的是ServiceTestCase,测试service的android 测试框架可以让service运行
在孤立的环境中,并提供了mock对象。当调用ServiceTestCase.startService()或者
ServiceTestCase.bindService()时,才会初始化测试环境,因此你可以在启动前,
设置自己的mock对象。
怎么设置mock Application和mock Context()呢?
设置mock Application通过setApplication()方法,设置mock Context通过setContext()方法
使用ServiceTestCase进行测试:
1. 继承
ServiceTestCase
public class LocalServiceTest extends ServiceTestCase<LocalService>{
2. 增加构造函数,
public LocalServiceTest() {super(LocalService.class);/** ServiceTestCase 假设你将会使用mock context *或者mock Application对于测试环境,如果不提供*这些对象,当启动service时,ServiceTestcase会*使用它自己的内部的实例去注入到service中,*/setContext(new MockContext());setApplication(new MockApplication());}
3. 增加setUp()方法和setupService()(基本上此方法不需要覆盖)方法
/*在每个测试方法之前执行,用于清除先前的测试,*和变量的初始化*/@Overrideprotected void setUp() throws Exception {// TODO Auto-generated method stubsuper.setUp();}/**在测试中创建Service并注入所有的依赖(context application)*当调用startService(Intent)或者bindService(Intent)时会自动 *调用这个方法,因此使用setContext()或者setApplication()注入 *依赖时,必须在这个方法之前*/@Overrideprotected void setupService() {// TODO Auto-generated method stubsuper.setupService();}
4. 测试Service是否能
通过startService()来开启服务
//测试LocalService是否能够通过startService()来开启服务public void testLocalServiceStartable(){Intent startIntent = new Intent();startIntent.setClass(getContext(), LocalService.class);startService(startIntent);//返回在startService()或者bindService()或创建的serviceLocalService localService = getService();assertNotNull(localService);assertEquals(LocalService.class.getName(), localService.getClass().getName());}
5. 测试Service能否被绑定
//验证LocalService能否被绑定public void testLocalServiceBindable(){Intent bindIntent = new Intent();bindIntent.setClass(getContext(), LocalService.class);IBinder service = bindService(bindIntent);//测试IBinder assertNotNull(service);}
6. 增加测试
tearDown()测试方法(这个方法可以不覆盖)
//这个方法会调用shutdownService()关闭所有的service@Overrideprotected void tearDown() throws Exception {// TODO Auto-generated method stubsuper.tearDown();}}
这个例子没有先验的测试方法。
API中有一个service测试的开发者指导很不错,是这样说的:
1. Lifecycle Support : Service的函数有特定的调用顺序,为了支持Service的生命周期
ServiceTestCase必须遵守下列协议:
setUp()方法会在每个测试方法之前调用,如果覆盖这个方法,必须
保证第一条语句是super.setUp()测试用例在测试方法中startService(Intent) or bindService(Intent)
后才会调用service的onCreate()方法来实例化service,因此在测试之前,
你有机会去调整测试框架和测试逻辑当测试方法调用ServiceTestCase.startService()orServiceTestCase.bindService() ,
测试用例将会调用Service.onCreate(),然后调用Service.startService(Intent) or
Service.bindService(Intent, ServiceConnection, int),当测试方法都结束后,测试用例会调用tearDown()方法,这个方法会停止,
销毁service根据service的启动方式,你必须在最后一条语句调用super.tearDown()
2. Dependency Injection:service有两个固有的依赖关系,它的Contex和相关的Application,
ServiceTestCase框架允许注入替代的mock的相关的依赖,因此,
执行单元测试,是在一个孤立的环境控制来依赖关系的。
Service Test1相关推荐
- Cannot start service test1: b'endpoint with name test1 already exists in network ... docker 网络被占用
docker网络基本知识 默认网络 # 查看网络 docker network ls bridge.none.host这 3 个网络包含在 Docker 实现中.运行一个容器时,可以使用 the –n ...
- ubuntu下tftp的安装、配置、使用
1. 安装(注意权限,root下) $ apt-get install tftp-hpa tftpd-hpa 2. 建立目录 $ mkdir /tftpboot # 这是建立tftp传输目录. $ ...
- Oracle Study之--Oracle 11gR2通过RMAN克隆数据库
Oracle Study之--Oracle 11gR2通过RMAN克隆数据库 Purpose of Database Duplication A duplicate database is usefu ...
- 构建简单的微服务架构
前言 本篇仅作引导,内容较多,如果阅读不方便,可以使用电脑打开我们的文档官网进行阅读.如下图所示: 文档官网地址:docs.xin-lai.com 目录 总体介绍 微服务架构的好处 微服务架 ...
- 构建自己的简单微服务架构(开源)
构建自己的简单微服务架构(开源) 原文:构建自己的简单微服务架构(开源) 前言 本篇仅作引导,内容较多,如果阅读不方便,可以使用电脑打开我们的文档官网进行阅读.如下图所示: 文档官网地址:https: ...
- Oracle 10g Data Guard
下文出现的ora11 ora12是机器名,其上分别装有 相同版本的Linux,相同版本的ORACLE10g软件. ora11上的数据库test1,用dbca创建 ora12不用建库,只需按下面的步骤做 ...
- Java 中代码优化的 30 个小技巧(下)
21 防止死循环 有些小伙伴看到这个标题,可能会感到有点意外,代码中不是应该避免死循环吗?为啥还是会产生死循环? 殊不知有些死循环是我们自己写的,例如下面这段代码: while(true) {if(c ...
- oracle 11g Data Guard物理备份库
两台oracle未安装ARC,俺是小白,占时不会玩arc.ADB高手在于分享,俺小白将 下面是Data Guard 主备环境配置过程分享给大家.备份是物理Data Guard 一, 系统:centos ...
- JAVA中如何实现代码优化(技巧讲解)
前言:今天叶秋学长跟大家谈谈优化这个话题,那么我们一起聊聊Java中如何实现代码优化这个问题,学长这里有几个实用的小技巧分享给大家,希望会对你们有所帮助. 博主传送门: 叶秋学长 推荐专栏: 秋招面试 ...
最新文章
- 35岁以前成功的12条黄金法则(1)
- 页面静态化2 --- 使用PHP缓存机制来完成页面静态化(上)(ob_flush和flush函数区别用法)...
- vmci.sys版本不正确_这样安装 Python 库才是最正确的哦
- 如何确定python开发环境已经配置好_搭建 python 开发环境 前面安装选位置我直接回车了现在我想测试查看目录该怎么办...
- 【测试】用例设计思路-六方面
- Nginx文档阅读笔记-Reverse Proxy vs. Load Balancer(反向代理与负载均衡)
- 微信小程序|开发实战篇之十二---order页面
- getmodifiers java_getModifiers()方法如何计算多个修饰符的值?
- 评论字数限制php,WordPress评论字数限制
- 一个学习PCI Express的 不错去处
- 华为手机备忘录的字体怎么调大?
- python爬取微信运动_用 Python 修改微信(支付宝)运动步数,轻松 TOP1
- Inpaint2021一款非常强大图片去水印神器
- 能上QQ无法打开网页
- GD32W515系列Wi-Fi MCU资料
- CSS——css外部样式文件的引入
- 你了解净水器滤芯知识多少?
- 计算机简史,硬件组成及基本原理
- Python实现Excel转JSON
- 人工智能导论实验——基于MindSpore的广告推荐