Android Service在测试工程中使用的注意事项

2024-05-04 07:18

本文主要是介绍Android Service在测试工程中使用的注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

做单元测试时需要在测试工程里开一个http service,使用intent调起时却发现service怎么都起不来,代码如下:

context = getInstrumentation().getTargetContext();
intent = new Intent(context, TestService.class);
context.startService(intent); 

看出错误在哪了吗?


答案:错误在context那里。

android的测试工程与被测工程关系非常密切,比如测试工程可以直接使用被测工程的各种权限而无需自己声明等。这里我犯的错误就是,我以为任何一个context实例都可以发送正确的intent,而不必区分测试工程还是被测工程。

Context之所以叫“上下文”,是因为它可以标志当前的环境,给各个参数提供一个背景。

这么说还是太抽象了,举个例子:

      
  <serviceandroid:name="com.sg.sledog.http.SledogWebService"android:launchMode="singleTask" ><intent-filter><action android:name="com.sg.sledog.http.SledogWebService" /></intent-filter></service>


这是在AndroidManifest.xml文件中对一个service的声明。如果我使用上面的代码去startService,程序会去哪里找这个service呢?
事实证明它会去com.sg.sledog包里找这个service,因为这里使用了targetContext,也就是被测工程com.sg.sledog的context,在这个上下文里,涉及的一切intent、service等都被认为是com.sg.sledog中的。

所以service起不来,因为它根本就不在com.sg.sledog包里。

正确的做法是:


context = getInstrumentation().getContext();
intent = new Intent(context, TestService.class);
context.startService(intent); 

使用测试工程的context。


希望自己通过这次总结,能长点记性,以后不要再犯类似的错误

这篇关于Android Service在测试工程中使用的注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958628

相关文章

【百度AI人脸核身+公安验证】Android示例工程运行

· 注意1:前提自己已经安装了Android Studio开发工具 · 注意2:此SDK必须企业认证才可以下载。且有相关验证。因此请先确认是否企业认证 · 注意3:此SDK需要2个Licenses 一个是OCR模块绑定包名的。另一个是人脸模块客户端SDK的里Licenses · 注意4:在人脸模块客户端创建应用之前。记得已经获取到了安卓keystore 中MD5值 · 注意5:在人脸模块创建

【百度AI人脸核身+公安验证】IOS示例工程运行

注意:前提百度账号满足企业认证     注意:公安验证接口非免费。需要单独提交工单申请哦     注意:人脸识别应用勾选文字识别的身份证识别     注意:人脸模块客户端创建了应用。并设置了授权标识、包名相关信息 以上注意都满足。请看重要!!!SDK的license 下载IOS保存本地 下载自动配置授权信息的示例工程 并解压 双击运行FacePrint.

数字信封(RSA和DES整合测试)加密技术

http://git.oschina.net/xshuai/ai 源码地址 DES加解密方法 package com.xs.demo.util;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKey

【Java】【百度AI】大家最近抖音玩的 【对称脸】【左右脸对称测试】 教程来啦

对称脸功能演示 注册百度AI 首先,就是注册百度AI账号,并创建人脸识别应用,获取AccessToken 备用。官方有图文教程哦。 https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3 准备一张图片 图片是必不可少的。 Tips:图片最好是正视角度哦~ 对称脸生成思路 1.图片调用百度AI-人脸检测服

Spring AOP 实现监控方法执行的时间(统计service中方法执行的时间)

项目中有时候会遇到统计方法执行的时间,来对项目进行优化!下面是我自己在工作中遇到的问题,和我自己的解决方法。 要统计出项目中方法执行时间大于1秒的那些方法!我们的项目开发使用的是SpringMVC 那么首先想到使用 Aop Aspet 切面统计,那样子更加方便也高效。 1:打开切面!因为项目使用的SpringMVC,项目中的配置文件就配置的 <aop:aspectj-autoproxy pro

java基础—java中使用final关键字的总结

有时候我,们希望某些东西是亘古不变的,可以使用final关键字完成这个重任! final学习总结: 1:final + 属性 如果属性是基本数据类型(byte 字节型short 短整型int 普通整型char 字符型float 浮点型long 长整型double 双精度),则变为常量,其值不能被更改;如果属性是引用类型,则引用地址不能被更改。(final 修饰一个对象,那么这个对象的引用地址

SVN—SVN服务器搭建和使用

本系列会总结一些svn和git的安装和使用,以及最后svn的项目如何迁移到git上,整个系列会持续输出。 要学习svn,那么首先开始搭建svn服务器和客户端。 下面要讲的有: svn下载和安装svn配置文件svn服务器的使用 1:svn服务器和客户端安装包下载和安装 Subversion是优秀的版本控制工具, 现在Subversion已经迁移到apache网站上了,下载地址: http:/

Java File中renameTo的介绍和使用说明

看到项目中有个地方用的File的renameTo这个方法,本以为这个方法就是用来文件重命名的,但是项目中确用它来进行文件的移动。就是使用renameTo将一个文件从一个目录移动另一个目录下! 下面就简单介绍一下renameTo,并整理一个renameTo的使用! renameTo的介绍 官方文档说明 /*** 重新命名此抽象路径名表示的文件。此方法行为的许多方面都是与平台有关的:重命名操作

MySQL使用SELECT 语句不加ORDER BY默认是如何排序的?

大家好,我是阿飞云 怕什么真理无穷,进一步有近一步的欢喜 记录一个MySQL查询排序的问题,一个SQL语句没有加order by,那么查询出来的结果到底是按照什么规则排序的呢?查询了网上的一些资料,分享如下: •MyISAM 表 MySQL Select 默认排序是按照物理存储顺序显示的(不进行额外排序)。也就是说SELECT * FROM tbl – 会产生“表扫描”。如果表没有删除、替换、更

Android 电池管理系统架构总结 Android power and battery management architecture summaries

文章目录 1 整体架构2 设计构架2.1 driver2.1.1 Charger.ko2.1.2 Battery.ko 2.2 power supply2.2.1 基础架构2.2.2 代码分析 2.3 healthd2.3.1 基础架构2.3.2 init2.3.4 update 2.4 framework 3 总结参考 1 整体架构 Android的电池架构包括从顶层用户使用