サービスの単体テストを作成する場合は、Mockitoをサービスの動作を模倣するために使用することができます。実際のデバイスでサービスをテストするには、サービスに接続する方法があります。
@RunWith(AndroidJUnit4.class)
public classRemoteProductServiceTest {
@Rule
public final ServiceTestRule mServiceRule = new ServiceTestRule();
@Test
public void testWithStartedService() throws TimeoutException {
mServiceRule.startService(
new Intent(InstrumentationRegistry.getTargetContext(), ProductService.class));
//do something
}
@Test
public void testWithBoundService() throws TimeoutException, RemoteException {
IBinder binder = mServiceRule.bindService(
new Intent(InstrumentationRegistry.getTargetContext(), ProductService.class));
IRemoteProductService iRemoteProductService = IRemoteProductService.Stub.asInterface(binder);
assertNotNull(iRemoteProductService);
iRemoteProductService.addProduct("tanvi", 12, 12.2f);
assertEquals(iRemoteProductService.getProduct("tanvi").getQuantity(), 12);
}
}
リンクが壊れていると思います。 – PunDefeated
リモートサービス、またはリモートアンドロイドサービスとやりとりしている小さなアプリをテストしていますか?アプリをテストしている場合は、インターフェイスにコーディングすることから始めます。リモートサービスへのすべての呼び出しは、インターフェイスで行う必要があります。 小さなアプリケーションには、実際にリモートサービスを呼び出すインターフェイスの実装があります。テストパッケージには、リモートサービスから返された情報を模倣する2番目の実装があります。 各テストでは、テストパッケージの実装で使用されるメモリデータにバッキングを構成できます。 –
私はアンドロイドでこのようなことをしていませんが、他のJavaアプリケーションでは春に持っていますので、正確な解決策は不明です。 –