Most visited

Recently visited

Added in API level 1
Deprecated since API level 24

ServiceTestCase

public abstract class ServiceTestCase
extends AndroidTestCase

java.lang.Object
   ↳ junit.framework.Assert
     ↳ junit.framework.TestCase
       ↳ android.test.AndroidTestCase
         ↳ android.test.ServiceTestCase<T extends android.app.Service>


此类在API级别24中已被弃用。
改为使用ServiceTestRule 新的测试应该使用Android Testing Support Library编写

此测试用例提供了一个框架,您可以在该框架中在受控环境中测试Service类。 它为服务的生命周期提供了基本的支持,并且可以使用这些钩子注入各种依赖关系并控制服务测试的环境。

Developer Guides

有关应用程序测试的更多信息,请阅读 Testing开发人员指南。

生命周期支持。 按照Services文档中所述,使用特定的调用顺序访问服务。 为了支持服务的生命周期, ServiceTestCase强制执行此协议:

依赖注入。 服务具有两个固有的依赖关系,其Context及其相关联的Application ServiceTestCase框架允许您为这些依赖关系注入修改的,模拟的或孤立的替换项,从而在独立的环境中执行具有受控依赖项的单元测试。

默认情况下,测试用例注入完整的系统上下文和一个通用的MockApplication对象。 您可以通过调用setContext()setApplication()来为其中的任何一个注入替代方法。 您必须调用startService()或bindService() 之前执行此操作。 测试框架提供了许多用于上下文替代品,包括的MockContextRenamingDelegatingContextContextWrapper ,和IsolatedContext

Summary

Inherited fields

From class android.test.AndroidTestCase

Public constructors

ServiceTestCase(Class<T> serviceClass)

构造函数

Public methods

Application getApplication()

返回被测服务正在使用的Application对象。

T getService()
Context getSystemContext()

返回由 setUp()保存的实际系统上下文。

void setApplication(Application application)

设置测试期间使用的应用程序。

void testServiceTestCaseSetUpProperly()

测试 setupService()正确运行并发出 assertNotNull(String, Object)如果有)。

Protected methods

IBinder bindService(Intent intent)

在测试开始的服务,就好像它是由开始以同样的方式 Context.bindService(Intent, ServiceConnection, flags)Intent标识服务。

void setUp()

获取当前系统上下文并存储它。

void setupService()

创建测试中的服务并将所有注入的依赖关系(上下文,应用程序)附加到它。

void shutdownService()

进行必要的调用以停止(或解除绑定)待测服务,并调用onDestroy()。

void startService(Intent intent)

启动被测服务,就像 Context.startService(Intent)启动 Intent标识服务一样。

void tearDown()

关闭待测服务。

Inherited methods

From class android.test.AndroidTestCase
From class junit.framework.TestCase
From class junit.framework.Assert
From class java.lang.Object
From interface junit.framework.Test

Public constructors

ServiceTestCase

Added in API level 1
ServiceTestCase (Class<T> serviceClass)

构造函数

Parameters
serviceClass Class: The type of the service under test.

Public methods

getApplication

Added in API level 1
Application getApplication ()

返回被测服务正在使用的Application对象。

Returns
Application The application object.

也可以看看:

getService

Added in API level 1
T getService ()

Returns
T An instance of the service under test. This instance is created automatically when a test calls startService(Intent) or bindService(Intent).

getSystemContext

Added in API level 1
Context getSystemContext ()

返回由setUp()保存的实际系统上下文。 用它为被测服务创建模拟或其他类型的上下文对象。

Returns
Context A normal system context.

setApplication

Added in API level 1
void setApplication (Application application)

设置测试期间使用的应用程序。 如果您不调用此方法,则使用新的MockApplication对象。

Parameters
application Application: The Application object that is used by the service under test.

也可以看看:

testServiceTestCaseSetUpProperly

Added in API level 1
void testServiceTestCaseSetUpProperly ()

测试setupService()正确运行并发出assertNotNull(String, Object)如果有)。 如果您愿意,您可以重写此测试方法。

Throws
异常

Protected methods

bindService

Added in API level 1
IBinder bindService (Intent intent)

启动被测服务,就像 Context.bindService(Intent, ServiceConnection, flags)使用标识服务的 Intent启动服务一样。

注意参数是不同的。 您不提供ServiceConnection对象或flags参数。 相反,你只提供意图。 该方法返回一个类型为IBinder的子类的IBinder ,如果该方法失败,则返回null。 IBinder对象是指应用程序和服务之间的通信通道。 该标志假定为BIND_AUTO_CREATE

有关此方法返回的通信通道对象的更多信息,请参阅 Designing a Remote Interface Using AIDL

Note: To be able to use bindService in a test, the service must implement getService() method. An example of this is in the ApiDemos sample application, in the LocalService demo.

Parameters
intent Intent: An Intent object of the form expected by bindService(Intent, ServiceConnection, int).
Returns
IBinder An object whose type is a subclass of IBinder, for making further calls into the service.

setUp

Added in API level 1
void setUp ()

获取当前系统上下文并存储它。 扩展此方法以执行您自己的测试初始化。 如果你这样做,你必须调用super.setUp()作为你的覆盖的第一条语句。 在每个测试方法执行之前调用该方法。

Throws
异常

setupService

Added in API level 1
void setupService ()

创建测试中的服务并将所有注入的依赖关系(上下文,应用程序)附加到它。 这由startService(Intent)bindService(Intent)自动bindService(Intent) 如果您需要拨打setContext()setApplication() ,请在调用此方法之前执行此操作。

shutdownService

Added in API level 1
void shutdownService ()

进行必要的调用以停止(或解除绑定)待测服务,并调用onDestroy()。 通常这会自动调用(通过tearDown() ,但您可以直接从您的测试中调用它以检查是否有正确的关闭行为。

startService

Added in API level 1
void startService (Intent intent)

启动被测服务,就像Context.startService(Intent)使用标识服务的Intent启动服务一样。 如果您使用此方法启动该服务,则它会自动停止tearDown()

Parameters
intent Intent: An Intent that identifies a service, of the same form as the Intent passed to Context.startService(Intent).

tearDown

Added in API level 1
void tearDown ()

关闭待测服务。 在进行下一个测试之前,确保清理所有资源并收集垃圾。 这种方法在每种测试方法之后被调用。

覆盖此方法的子类必须调用 super.tearDown()作为最后一个语句。

Throws
异常

Hooray!