我想用Robolectric测试我的HostApduService,但我找不到测试该服务的方法。常规测试Service的方法对HostApduServices无效。有什么建议吗?
我到目前为止尝试过的:
普通服务的示例
public class MyNormalService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void doStuff(){
// Logic
}
}
示例HostApduservice
public class MyHostApduService extends HostApduService {
@Override
public byte[] processCommandApdu(final byte[] commandApdu, Bundle extras) {
// Do my stuff
}
}
测试
@Config(emulateSdk = 18)
@RunWith(RobolectricTestRunner.class)
public class MyHostApduServiceTest {
@Test
public void testNormalService(){ // Succeeds
MyNormalService service = new MyNormalService();
assertNotNull(service);
}
@Test
public void testProcessCommandApdu1(){ // Fails
MyHostApduService service = new MyHostApduService();
assertNotNull(service);
}
@Test
public void testProcessCommandApdu2(){ // Fails
MyHostApduService service = Robolectric.buildService(MyHostApduService.class).create().get();
assertNotNull(service);
}
@Test
public void testProcessCommandApdu3(){ // Fails
MyHostApduService service = Robolectric.setupService(MyHostApduService.class);
assertNotNull(service);
}
}
所有的APDU测试都出现了同样的错误:
java.lang.RuntimeException: Stub!
at android.nfc.cardemulation.HostApduService.__constructor__(HostApduService.java)
at android.nfc.cardemulation.HostApduService.<init>(HostApduService.java:5)
at com.abc.MyHostApduService.<init>(MyHostApduService.java:
测试普通服务成功。