我有一个测试项目,我的简单测试用例扩展了AndroidTestCase
class:
public class MyTest extends AndroidTestCase{
private Context mContext;
public MyTest(){
super();
}
@Override
public void setUp() throws Exception {
super.setUp();
mContext = getContext();
//Start my service
mContext.startService(new Intent(mContext, MyService.class));
}
@Override
protected void runTest() {
...
}
...
}
在上述测试用例的setUp()
回调中,我开始MyService
。
MyService也在我的测试项目的 AndroidManifest.xml 中声明:
<service
android:name="com.my.app.services.MyService"/>
MyService.java:
public class MyService extends Service {
@Override
public void onCreate() {
super.onCreate();
Log.d("MyService", "onCreate()");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
Log.d("MyService", "onStartCommand");
}
...
}
但在我运行测试用例之后,我在日志中注意到{strong> onCreate()
onStartCommand()
MyService
的回调被称为。
为什么?我错过了Android测试框架中的服务使用是否有任何特殊规则?
答案 0 :(得分:1)
AndroidTestCase返回的上下文可能是一个模拟的上下文 - 它可能没有针对startService的实现。你看过http://developer.android.com/tools/testing/service_testing.html吗?
答案 1 :(得分:0)
如果您想使用服务,请使用Service testCase。
答案 2 :(得分:0)
测试用例似乎可以启动服务,但服务必须是正在测试的主项目的一部分,它们不能成为测试项目的一部分。我不喜欢在我的项目中只有一个测试课程,但因为它似乎是唯一的方式...