So testen Sie den Remote-Android-Aidl-Dienst

Lesezeit: 3 Minuten

Benutzer-Avatar
Anders T.

Ich habe eine kleine App, die mit einer Fernbedienung interagiert android Service. Ich möchte diesen Dienst in Komponententests verspotten. ich benutze Roboterelektrik und JUnit für andere Testfälle und Schatten, aber ich konnte nicht herausfinden, wie man mit Remote-Diensten umgeht.

Reicht es aus, einen Testdienst mit demselben Paket wie dem echten Dienst zu erstellen und zu starten und Methoden mit denselben zu exportieren aidl?

Da ich den Code für diesen Dienst nicht habe, gehe ich davon aus, dass ich ihn nicht verwenden kann Robolectric‘s ShadowService was erfordert, dass echte Klasse da ist.

Danke vielmals.

  • Ich glaube deine Links sind defekt.

    – Wortspiel Besiegt

    1. Dezember 2015 um 20:33 Uhr

  • Testen Sie den Remote-Dienst oder die kleine App, die mit dem Remote-Android-Dienst interagiert? Wenn Sie die App testen, würde ich mit der Codierung einer Schnittstelle beginnen. Alle Aufrufe an den Remote-Service sollten über die Schnittstelle erfolgen. Ihre kleine App hätte eine Implementierung der Schnittstelle, die den Remotedienst tatsächlich aufruft. Ihr Testpaket hätte eine zweite Implementierung, die die vom Remotedienst zurückgegebenen Informationen simuliert. Jeder Test könnte einige Backing-in-Memory-Daten konfigurieren, die von der Testpaketimplementierung verwendet werden.

    – Dan König

    5. Dezember 2015 um 4:15 Uhr


  • Ich habe so etwas in Android noch nicht gemacht, aber mit Spring in anderen Java-Anwendungen, daher bin ich mir einer genauen Lösung nicht sicher.

    – Dan König

    5. Dezember 2015 um 4:20 Uhr

  • Hast du eine Lösung gefunden? Das Beste, was uns bisher zum Testen eingefallen ist, ist „AIDL funktioniert entweder oder es funktioniert nicht, man muss es nicht testen“ (Jetzt den „Dienst“ hinter AIDL testen … das ist ein ganz anderes Thema.) und Ich bin gespannt, was für Blackbox-Testing-Aidl-Dienste praktikabel ist

    – mawalker

    20. Dezember 2015 um 9:02 Uhr

ich würde … benutzen Mockito um ein Mock der Schnittstelle zu erstellen und diese Instanz dann in Ihren Tests an Ihren Code zu übergeben. Sie könnten auch manuell eine Implementierung dieser Schnittstelle in Ihrem Testcode erstellen und diese verwenden.

Sie müssen das Mocking also selbst durchführen, und es ist wichtig, dass der Code, den Sie testen möchten, eine Form der Abhängigkeitsinjektion verwendet, um einen Verweis auf die Aidl-Schnittstelle zu erhalten, damit Sie Ihren eigenen Mock in Ihren Tests bestehen können.

Benutzer-Avatar
Benutzer3219477

Wenn Sie einen Einheitentest für den Dienst schreiben möchten, können Sie Mockito verwenden, um das Dienstverhalten zu simulieren. Wenn Sie Ihren Dienst auf dem realen Gerät testen möchten, können Sie sich auf diese Weise mit Ihrem Dienst verbinden.

@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);
    }
}

  • Was ist mit dem Testen der Client-App?

    – Der_Marsmensch

    15. September 2019 um 21:00 Uhr

  • diese Arbeit zum Testen auf dem Gerät oder Emulator

    – Serg Burlaka

    31. Mai um 17:13 Uhr

  • Auf Ihrem Computer ist das Gerät @sergburlaka nicht erforderlich

    – Benutzer3219477

    1. Juni um 18:21 Uhr

1076820cookie-checkSo testen Sie den Remote-Android-Aidl-Dienst

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy