Android 中的单元测试(使用ServiceTestCase 进行 Service测试 例子)

本文介绍了一个简单的 Android Service 的创建及测试过程。通过一个具体的示例项目,详细讲解了 Android Service 的生命周期及其基本方法,包括 onCreate(), onStart() 和 onDestroy()。此外,还介绍了如何设置 Android Test 项目来测试 Service,并解决了一些常见的测试错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进行Android Service 测试之前要稍微熟悉Android Service的生命周期,onCreate只执行一次,完了后是OnStart()。对于一个已经启动的Service来说,再次调用startService()只会执行OnStart()了。

首先我们写一个最简单的Service,建立一个project 叫 AndroidService:

src/com.waitingfy.android/AndroidService.java

package com.waitingfy.android;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class AndroidService extends Service{
 
	private final static String TAG = "AndroidService";
	@Override
	public void onCreate() {
		super.onCreate();
		Log.v(TAG, "service: onCreate()");
	}
	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		Log.v(TAG, "service: onStart()");
	}
	@Override
	public void onDestroy() {
		super.onDestroy();
		Log.v(TAG, "service: onDestroy()");
	}
	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}

}

记得在AndroidManifest.xml中要注册这个服务

接下来我们建立一个AndroidTest的project基于上面我们刚刚建立的项目,名字叫 AndroidServiceTest

src/com.waitingfy.android.test/TestAndroidService.java

package com.waitingfy.android.test;

import com.waitingfy.android.AndroidService;

import android.content.Intent;
import android.test.ServiceTestCase;
import android.test.suitebuilder.annotation.SmallTest;

public class TestAndroidService extends ServiceTestCase<AndroidService>{



	public TestAndroidService() {
		super(AndroidService.class);
	}
	
    @Override
	protected void setUp() throws Exception {
		super.setUp();
        getContext().startService(new Intent(getContext(), AndroidService.class));
	}
    @SmallTest
    public void testSomething() {
		assertEquals(2, 2);
	}
	@Override
	protected void tearDown() throws Exception {
		getContext().stopService(new Intent(getContext(), AndroidService.class));
	}
}


测试结果如下:

写在后面:

第一个弄的时候报了这个错误:

junit.framework.AssertionFailedError: Class com.waitingfy.android.test.TestAndroidService has no public constructor TestCase(String name) or TestCase()

是因为构造函数没有写对。

public TestAndroidService(Class<AndroidService> serviceClass) {
		super(serviceClass);
		// TODO Auto-generated constructor stub
	}

改成

	public TestAndroidService() {
		super(AndroidService.class);
	}

就ok了。

源码下载: AndroidServiceTest.rar

文章源地址:http://www.waitingfy.com/?p=103

文章源地址:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瓦力冫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值