Попытка написать свое первое приложение для Android за TDD (я написал несколько небольших приложений для Android без TDD, так что знаком с окружающей средой), но я не могу понять, как написать свое Первый тест.
Сценарий:
У меня есть активность TasksActivity и служба TasksService. Мне нужно проверить, что TasksActivity запускает TasksService в своем методе onStart ().
Тест, который я написал, таков:
public class ServiceControlTest extends ActivityUnitTestCase<TasksActivity>{
public ServiceControlTest() {
super(TasksActivity.class);
}
public void testStartServiceOnInit () {
final AtomicBoolean serviceStarted = new AtomicBoolean(false);
setActivityContext(new MockContext() {
@Override
public ComponentName startService(Intent service) {
Log.v("mockcontext", "Start service: " + service.toUri(0));
if (service.getComponent().getClassName().equals (TasksService.class.getName()))
serviceStarted.set(true);
return service.getComponent();
}
});
startActivity(new Intent(), null, null);
assertTrue ("Service should have been started", serviceStarted.get());
}
}
В моем методе onCreate () в TasksActivity у меня есть:
startService(new Intent(this, TasksService.class));
Я тоже пробовал
getBaseContext().startService(new Intent(this, TasksService.class));
Но ни в одном из случаев метод startService моего MockContext не вызывается. Есть ли способ настроить перехват этого метода? Я действительно предпочел бы не начинать упаковывать базовые API для Android, чтобы выполнять такие базовые тесты ...