社区
Java EE
帖子详情
Test时需要做方法的stub,除了使用接口外还有其他什么办法吗?
鸣鸣Amadues
2020-01-22 11:26:30
要做隔离,除了利用接口的多态性外还有什么办法?
实在不想为了测试把类写成接口。
...全文
188
1
打赏
收藏
Test时需要做方法的stub,除了使用接口外还有其他什么办法吗?
要做隔离,除了利用接口的多态性外还有什么办法? 实在不想为了测试把类写成接口。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
鸣鸣Amadues
2020-01-27
打赏
举报
回复
有人懂stub吗?????
android的服务
为了处理这种后台进程,Android引入了Service的概念。Service在Android中是一种长生命周期的组件,它不实现任何用户界面。最常见的例子如:媒体播放器程序,它可以在转到后台运行的
时
候仍然能保持播放歌曲;或者如文件下载程序,它可以在后台执行文件的下载。 让我们来看下如何创建Service: 创建一个Service Android中已经定义了一个 ‘Service’类,所有其他的Service都继承于该类。Service类中定义了一系列的生命周期相关的
方法
,如: onCreate(), onStart(), onDestroy()。参见下例: package com.wissen.
test
App.service; public class MyService extends Service { @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); Toast.makeText(this, “Service created…”, Toast.LENGTH_LONG).show(); } @Override public void onDestroy() { super.onDestroy(); Toast.makeText(this, “Service destroyed…”, Toast.LENGTH_LONG).show(); } }上例中的这个Service主要
做
了这些事:当服务创建和销毁
时
通过界面消息提示用户。 如Android中的其它部件一样, Service也会和一系列Intent关联。Service的运行入口
需要
在AndroidManifest.xml中进行配置,如下: 1.
2.
3.
testApp.service.MY_SERVICE” /> 4.
5.
复制代码 之后我们的Service就可以被其他代码所
使用
了。
使用
Service: 应用程序可以通过调用 Context.startService
方法
来启动Service。如果当前没有指定的Service实例被创建,则该
方法
会调用 Service的onCreate
方法
来创建一个实例;否则调用Service的onStart
方法
。参见下列代码: 1. .. 2. Intent serviceIntent = new Intent(); 3. serviceIntent.setAction(”com.wissen.
test
App.service.MY_SERVICE”); 4. startService(serviceIntent); 5. .. 复制代码 以上代码调用了startService
方法
,Service会持续运行,直到调用stopService()或stopSelf()
方法
。 还有另一种绑定Service的方式: 1. … 2. ServiceConnection conn = new ServiceConnection() { 3. @Override 4. public void onServiceConnected(ComponentName name, IBinder service) { 5. Log.i(”INFO”, “Service bound “); 6. } 7. 8. @Override 9. public void onServiceDisconnected(ComponentName arg0) { 10. Log.i(”INFO”, “Service Unbound “); 11. } 12. }; 13. 14. bindService(new Intent(”com.wissen.
test
App.service.MY_SERVICE”), conn, Context.BIND_AUTO_CREATE); 15. … 复制代码 当应用程序绑定一个Service后,该应用程序和Service之间就能进行互相通信,通常,这种通信的完成依靠于我们定义的一些
接口
,请看下例: 1. package com.wissen.
test
App; 2. 3. public interface IMyService { 4. public int getStatusCode(); 5. } 复制代码 这里定义了一个
方法
来获取Service的状态,但是Service是如何来使它起作用的呢?之前我们看到Service中有个返回IBinder对象的onBind
方法
,这个
方法
会在Service被绑定到其他程序上
时
被调用,而这个IBinder对象和之前看到的onServiceConnected
方法
中传入的那个IBinder是同一个东西。应用和Service间就依靠这个IBinder对象进行通信: 1. public class MyService extends Service { 2. private int statusCode; 3. private MyServiceBinder myServiceBinder = new MyServiceBinder(); 4. 5. @Override 6. public IBinder onBind(Intent intent) { 7. return myServiceBinder; 8. } 9. 10. public class MyServiceBinder extends Binder implements IMyService { 11. public int getStatusCode() { 12. return statusCode; 13. } 14. } 15. 16. … 17. } 复制代码 下列代码是说明getStatusCode是如何被调用的: 1. ServiceConnection conn = new ServiceConnection() { 2. @Override 3. public void onServiceConnected(ComponentName name, IBinder service) { 4. IMyService myService = (IMyService) service; 5. statusCode = myService.getStatusCode(); 6. Log.i(”INFO”, “Service bound “); 7. } 8. 9. … 10. }; 复制代码 或者,你也可以通过
使用
ServiceListener
接口
来达成相同的目的。 与远程Service通信(进程间Service通信): 如何两个进程间的Service
需要
进行通信,则
需要
把对象序列化后进行互相发送。 Android提供了一个 AIDL (Android
接口
定义语言)工具 来处理序列化和通信。这种情况下Service
需要
以aidl文件的方式提供服务
接口
,AIDL工具将生成一个相应的java
接口
,并且在生成的服务
接口
中包含一个功能调用的
stub
服务桩类。Service的实现类
需要
去继承这个
stub
服务桩类。Service的onBind
方法
会返回实现类的对象,之后你就可以
使用
它了,参见下例: 先创建一个IMyRemoteService.aidl文件,内容如下: 1. package com.wissen.
test
App; 2. 3. interface IMyRemoteService { 4. int getStatusCode(); 5. } 复制代码 如果你正在
使用
eclipse的 Android插件,则它会根据这个aidl文件生成一个Java
接口
类。生成的
接口
类中会有一个内部类
Stub
类,你要
做
的事就是去继承该
Stub
类: 1. package com.wissen.
test
App; 2. 3. class RemoteService implements Service { 4. int statusCode; 5. 6. @Override 7. public IBinder onBind(Intent arg0) { 8. return myRemoteService
Stub
; 9. } 10. 11. private IMyRemoteService.
Stub
myRemoteService
Stub
= new IMyRemoteService.
Stub
() { 12. public int getStatusCode() throws RemoteException { 13. return 0; 14. } 15. }; 16. 17. … 18. } 复制代码 当客户端应用连接到这个Service
时
,onServiceConnected
方法
将被调用,客户端就可以获得IBinder对象。参看下面的客户端onServiceConnected
方法
: 1. … 2. ServiceConnection conn = new ServiceConnection() { 3. @Override 4. public void onServiceConnected(ComponentName name, IBinder service) { 5. IMyRemoteService myRemoteService = IMyRemoteService.
Stub
.asInterface(service); 6. try { 7. statusCode = myRemoteService.getStatusCode(); 8. } catch(RemoteException e) { 9. // handle exception 10. } 11. Log.i(”INFO”, “Service bound “); 12. } 13. 14. … 15. }; 复制代码 权限: 我们可以在AndroidManifest.xml文件中
使用
标签来指定Service访问的权限: 1.
2.
3.
testApp.service.MY_SERVICE” /> 4.
5.
复制代码 之后应用程序要访问该Service的话就
需要
使用
标签来指定相应的权限: 1.
2.
复制代码 http://www.fulema.com/viewthread.php?tid=5&extra=page%3D1
stub
测试
时
如何
接口
转发
stub
测试
时
如何
接口
转发我们的网站依赖协作方
接口
(其他部门开发),经常遇到的情况是:我们进行开发
时
,协作方的
接口
没有开发完成,所以我们没法调用.协作方会提前把API文档发给我们.所以我们想到了
stub
,根据他们提供的API文档,制造假数据,这样就不会阻碍我们的开发.具体服务依赖:我们的网站是store.ccc.com,依赖协作方的域名:bsvc.ccc...
Android底层技术:HAL驱动开发
本课程提供开发者学习Android底层的HAL(硬件抽象层)的开发
方法
和技术。HAL所在的位置是介于Android系统服务与Linux内核之间,HAL Driver是以library形式出现,给HAL
Stub
调用,供Android System架构者调用。而HAL ...
Java单元测试实践-06.Mock后
Stub
静态
方法
1. Mock后
Stub
静态
方法
以下
使用
PowerMockito对包含静态
方法
的类进行Mock,再
使用
Mockito/PowerMockito对静态
方法
进行
Stub
,可以改变被Mock/
Stub
方法
的行为。 1.1. Mock包含静态
方法
的类 参考“Mocking static methods”( https://github.com/powermock/powermock/wiki/MockStatic#mocking-static-methods )。
使用
PowerMockito对静态
方法
对应的类进
cpp-
stub
使用
教程(基于G
test
)
配合G
test
使用
,因为G
test
的所有
接口
都是基于虚函数的;此
外
,由于一些依赖
接口
不容易
Stub
或者Mock(或者写
Stub
test
过于麻烦),因此在G
test
的基础上
使用
cpp-
stub
进行单元测试用例编写。
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章