Ceci est le premier message. Utilisez-vous "Mockito"?
J'ai utilisé Android Studio pour les entreprises pour créer une application, et quand j'ai fait UnitTest, je me suis battu avec Mockito, donc je le posterai pour me faire des amis avec Mockito et comme mémorandum.
L'application que je créais a été fournie avec une interface par aidl, et était une application qui se lie au service.
Au départ, j'ai utilisé ShadowApplication.setComponentNameAndServiceForBindService ()
de Robolectric pour passer un IBinder mocké, mais lorsque je récupère l'interface avec ʻIBinder.Stub.asInterface () `, cela devient un objet différent, donc Je n'ai pas pu en faire un simulacre.
(Peut-être que mon Mock était tout simplement faux.)
Il semble que les méthodes statiques puissent également être converties en Mock à partir de Mockito 3.4.0, mais je n'ai pas trouvé d'informations utiles sur le Web, je vais donc les montrer ci-dessous.
ʻComment créer des méthodes statiques telles que IBinder.Stub.asInterface () `Mock. Il peut être converti en Mock par l'utilisation suivante.
final IMyService mockMyService = mock(IMyService.class); // ⭐︎1
try(final MockedStatic<IMyService.Stub> mockedStatic = mockStatic(IMyService.Stub.class)) {
// ↓ La valeur de retour de IMyService.Stub.asInterface () sera le IMyService simulé (⭐︎1).
mockedStatic.when(() -> IMyService.Stub.asInterface(any())).thenReturn(mockMyService);
// Veuillez tester avec bindService () dans Activity etc. ci-dessous.
final ActivityController
En effectuant l'opération ci-dessus, vous pouvez transformer une méthode statique en un Mock. Dans ce qui précède, il est décrit comme «try-with-resources», mais s'il n'est pas décrit comme «try-with-resources», veuillez exécuter close ().
final MockedStatic<IMyService.Stub> mockedStatic = mockStatic(IMyService.Stub.class);
...
mockedStatic.close();
Mockito peut également être utilisé pour simuler une classe qui est «nouvelle» dans une méthode.
final MockedConstruction<SubClass> mockedConstruction = mockConstruction(SubClass.class);
// Vous pouvez obtenir la nouvelle classe ci-dessous
// Puisque la classe acquise est Mocked, vous pouvez changer la valeur de retour, etc. en utilisant when ().
List
Puisque c'est mon premier message, je ne suis pas sûr de pouvoir bien l'expliquer. J'espère que cela aide encore un peu quelqu'un. La méthode de conversion Mock introduite cette fois n'est qu'une partie. «MockedStatic» et «MockedConstruction» ont plusieurs types de constructeurs, donc [documentation officielle de Mockito](https://javadoc.io/static/org.mockito/mockito-core/3.5.9/org/mockito/ Veuillez vous référer à Mockito.html) et essayez diverses choses avec IDE comme Android Studio.