如何在测试中多次调用onStartCommand?

时间:2014-06-01 11:04:18

标签: android android-intent android-service android-service-binding

我有以下设计:

public class MyService extends Service{
  protected Logger _log;
  int _counter;

  onStartCommand(...){
     _log.print (++_counter);
  }
}

public class MyServiceTestWrapper extends MyService{
  public void setLog(Logger mockLogger){ _logger = mockLogger; }
}

public class MyServiceTest extends ServiceTestClass<MyServiceTestWrapper>{
  public void test_myTest(){
    Logger fakeLogger = Mockito.Mock(Logger.class);

    // HERE IM NOT SURE HOW TO CONTINUE...
    //... 
    //...

    Mockito.verify(fakeLogger.write(Mockito.any(String.class))).times(3);
  }
}

如何获取服务实例并对onStartCommand进行3次调用?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

每次调用startService(即使它已在运行),都会调用onStartCommand

所以,要调用它3次,你可以简单地写一下:

Intent serviceIntent = new Intent(MainActivity.this, MySerivce.class);
for (int x = 0; x < 3; x++) {
    startService(serviceIntent);
}

来源:Android文档(如下所示)

  

请注意,对Context.startService()的多次调用不会嵌套(尽管它们会导致对onStartCommand()的多次相应调用)