У меня есть тестовый проект, мой простой тест расширяет AndroidTestCase
класс:onStartCommand() не вызывается при запуске службы в моем тестовом случае
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");
}
...
}
Но после того, как я запускаю мой тестовый случай, я заметил от лога, что неonCreate()
илиonStartCommand()
были вызваны обратные вызовы MyService
. Почему? Есть ли какое-либо специальное правило, применяемое к использованию Сервиса в Android Test Framework, которое я пропустил?
Я не думаю, что смогу ответить на этот вопрос :(нам нужен кто-то более опытный –
Я думаю, что вы забыли упомянуть имя службы в файле манифеста. В таком случае вы не сообщаются системой о произошедшей ошибке. – Khay