[转]Android Service Test——简单测试例子
2011-08-06 08:22
597 查看
本文转自:http://cmk128.chinaunix.com/space.php?uid=20771867&do=blog&id=134316
前两篇文章对Android Service和ServiceTestCase做了简单的分析,在本文中将一步步实现对一个Service的测试,由于参考的资料非常有限,大部分都是自己研究摸索的,不保证正确性。在以后的工作中,我会进行进一步的研究。
首先做一下对服务的启动和停止的测试。测试的对象是一个很简单的播放音乐的服务,代码是我在网上搜的,对其做了一些修改来方便测试,具体代码如下:
package com.example;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class MyService extends Service {
MediaPlayer player;
public IBinder onBind(Intent intent){
return null;
}
public void onCreate() {
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
player=MediaPlayer.create(this, R.raw.start);
player.setLooping(false);
}
public void onDestroy(){
Log.d("stop","stoped");
Toast.makeText(this, "My Servece Stopped", Toast.LENGTH_LONG).show();
player.stop();
}
public void onStart(Intent intent,int startid){
Toast.makeText(this, "Started", Toast.LENGTH_LONG).show();
player.start();
}
}
可以看到该服务非常的简单,我们对其的测试相对应地也很简单。下面就一步步进行测试。
1.在ECLIPSE中运行File>New > Project > Android > Android Test Project.如下图所示,输入Test Project Name并且在“Test Tartget”中选择所要测试的工程。其余的会自动填好。最后点击“Finish”按钮。
2.在新建的项目上右击鼠标,选择NEW>CLASS。如下图所示,输入类名。在Superclass一览点击Browse,选择“android.test.ServiceTestCase<T>”,将其中的T改为所要测试的服务类名“MyService”。点击finish按钮。这样第一个测试类就创建了。
3.在新建的类中输入代码:
package com.example.test;
import com.example.MyService;
import android.content.Intent;
import android.test.ServiceTestCase;
import android.util.Log;
public class MyServiceTest extends ServiceTestCase<MyService> {
private String TAG="myservicetest";
private Context mContext;
/**
* 构造方法
*/
public MyServiceTest() {
super(MyService.class);
}
/**
* 重写setUp方法,第一句调用super.setUp
*/
protected void setUp() throws Exception {
super.setUp();
mContext = getContext();
}
// public void testAndroidTestCaseSetupProperly() {
// super.testAndroidTestCaseSetupProperly();
// }
protected void tearDown() throws Exception {
mContext = null;
super.tearDown();
}
/**
* 测试Service正确地启动
*/
public void testStart() {
Log.i(TAG, "start testStart");
try {
Intent intent = new Intent();
startService(intent);
MyService Serv=getService();
assertNotNull(Serv);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
e.printStackTrace();
fail(e.getMessage());
} finally {
Log.i(TAG, "end testStart");
}
}
/**
* 测试Service正确的终止
*/
public void teststop() {
Log.i(TAG, "start teststopService");
try {
Intent intent = new Intent();
startService(intent);
MyService service = getService();
service.stopService(intent);
}
catch (Exception e) {
e.printStackTrace();
fail(e.toString());
}
finally {
Log.i(TAG, "end teststopService");
}
}
}
4.在工程上右击鼠标选择Run As> Android JUnit Test运行测试用例,测试结果如下图所示,可以看到测试都通过了,如果测试没通过,在下面的“Failure Trace”中会给出错误信息。最后的两个测试用例是系统自动运行的。
至此,第一个测试例子就结束了,可以看到这个例子非常地简单,在实际开发中所要用的肯定比这复杂得多,还需要对其进行更深入的研究,比如说加入mock object 等。
前两篇文章对Android Service和ServiceTestCase做了简单的分析,在本文中将一步步实现对一个Service的测试,由于参考的资料非常有限,大部分都是自己研究摸索的,不保证正确性。在以后的工作中,我会进行进一步的研究。
首先做一下对服务的启动和停止的测试。测试的对象是一个很简单的播放音乐的服务,代码是我在网上搜的,对其做了一些修改来方便测试,具体代码如下:
package com.example;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class MyService extends Service {
MediaPlayer player;
public IBinder onBind(Intent intent){
return null;
}
public void onCreate() {
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
player=MediaPlayer.create(this, R.raw.start);
player.setLooping(false);
}
public void onDestroy(){
Log.d("stop","stoped");
Toast.makeText(this, "My Servece Stopped", Toast.LENGTH_LONG).show();
player.stop();
}
public void onStart(Intent intent,int startid){
Toast.makeText(this, "Started", Toast.LENGTH_LONG).show();
player.start();
}
}
可以看到该服务非常的简单,我们对其的测试相对应地也很简单。下面就一步步进行测试。
1.在ECLIPSE中运行File>New > Project > Android > Android Test Project.如下图所示,输入Test Project Name并且在“Test Tartget”中选择所要测试的工程。其余的会自动填好。最后点击“Finish”按钮。
2.在新建的项目上右击鼠标,选择NEW>CLASS。如下图所示,输入类名。在Superclass一览点击Browse,选择“android.test.ServiceTestCase<T>”,将其中的T改为所要测试的服务类名“MyService”。点击finish按钮。这样第一个测试类就创建了。
3.在新建的类中输入代码:
package com.example.test;
import com.example.MyService;
import android.content.Intent;
import android.test.ServiceTestCase;
import android.util.Log;
public class MyServiceTest extends ServiceTestCase<MyService> {
private String TAG="myservicetest";
private Context mContext;
/**
* 构造方法
*/
public MyServiceTest() {
super(MyService.class);
}
/**
* 重写setUp方法,第一句调用super.setUp
*/
protected void setUp() throws Exception {
super.setUp();
mContext = getContext();
}
// public void testAndroidTestCaseSetupProperly() {
// super.testAndroidTestCaseSetupProperly();
// }
protected void tearDown() throws Exception {
mContext = null;
super.tearDown();
}
/**
* 测试Service正确地启动
*/
public void testStart() {
Log.i(TAG, "start testStart");
try {
Intent intent = new Intent();
startService(intent);
MyService Serv=getService();
assertNotNull(Serv);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
e.printStackTrace();
fail(e.getMessage());
} finally {
Log.i(TAG, "end testStart");
}
}
/**
* 测试Service正确的终止
*/
public void teststop() {
Log.i(TAG, "start teststopService");
try {
Intent intent = new Intent();
startService(intent);
MyService service = getService();
service.stopService(intent);
}
catch (Exception e) {
e.printStackTrace();
fail(e.toString());
}
finally {
Log.i(TAG, "end teststopService");
}
}
}
4.在工程上右击鼠标选择Run As> Android JUnit Test运行测试用例,测试结果如下图所示,可以看到测试都通过了,如果测试没通过,在下面的“Failure Trace”中会给出错误信息。最后的两个测试用例是系统自动运行的。
至此,第一个测试例子就结束了,可以看到这个例子非常地简单,在实际开发中所要用的肯定比这复杂得多,还需要对其进行更深入的研究,比如说加入mock object 等。
相关文章推荐
- Android中Activity和Service简单交互的例子
- Android 中的单元测试(使用ServiceTestCase 进行 Service测试 例子)
- android Service 简单例子
- Android最简单的基于FFmpeg的例子(二)---测试编译好的SO库
- Android Bound Service(一) ----- Extending Binder Service(进程内绑定Service的简单例子)
- 【Android学习日记】(八) Service的简单使用例子
- android Service 简单例子
- Android 访问C#.Net Webservice (简单例子适合初学者)
- Android小例子:Service组件的简单使用
- StormDRPC 概念以及简单例子测试
- Android测试教程(5):第一个测试项目HelloWorldTest
- Android Service使用方法--简单音乐播放实例
- Android glide使用简单例子(比较全的例子,包含gif)
- Android Wifi:使用Android Instrument 自动测试 WIFI_SERVICE
- Android调用天气预报的WebService简单例子
- android基础知识1:json解析及简单例子
- Android例子—AIDL实现两个进程间的简单通信
- Android生命周期,点击home键和返回键时的顺序以及MENU菜单键简单测试
- Android(14)Handler简单例子(1)
- Android中关于JNI 的学习(零)简单的例子,简单地入门