Dies ist der erste Beitrag. Verwenden Sie "Mockito"?
Ich habe Android Studio für Unternehmen verwendet, um eine Anwendung zu erstellen, und als ich UnitTest durchgeführt habe, hatte ich einen Streit mit Mockito, daher werde ich ihn veröffentlichen, um mich mit Mockito anzufreunden und als mein Memorandum.
Die von mir erstellte Anwendung wurde von aidl mit einer Schnittstelle versehen und war eine Anwendung, die an den Dienst gebunden ist. Anfangs habe ich Robolectrics "ShadowApplication.setComponentNameAndServiceForBindService ()" verwendet, um einen verspotteten IBinder zu übergeben, aber wenn ich die Schnittstelle mit "IBinder.Stub.asInterface ()" abrufe, wird es ein anderes Objekt Ich konnte es nicht zu einem Mock machen. (Vielleicht war mein Mock einfach falsch.)
Es scheint, dass statische Methoden auch von Mockito 3.4.0 in Mock konvertiert werden können, aber ich konnte keine nützlichen Informationen im Web finden, daher werde ich sie unten zeigen.
Dies ist eine Methode zum Verspotten statischer Methoden wie "IBinder.Stub.asInterface ()". Es kann durch die folgende Verwendung in Mock konvertiert werden.
final IMyService mockMyService = mock(IMyService.class); // ⭐︎1
try(final MockedStatic<IMyService.Stub> mockedStatic = mockStatic(IMyService.Stub.class)) {
// ↓ Der Rückgabewert von IMyService.Stub.asInterface () ist der verspottete IMyService (⭐︎1).
mockedStatic.when(() -> IMyService.Stub.asInterface(any())).thenReturn(mockMyService);
// Bitte testen Sie mit bindService () in Aktivität usw. unten.
final ActivityController
Durch Ausführen der obigen Operation können Sie eine statische Methode in einen Mock verwandeln. Oben wird es als "Versuch mit Ressourcen" beschrieben. Wenn es jedoch nicht als "Versuch mit Ressourcen" beschrieben wird, führen Sie bitte close () aus.
final MockedStatic<IMyService.Stub> mockedStatic = mockStatic(IMyService.Stub.class);
...
mockedStatic.close();
Mockito kann auch verwendet werden, um eine Klasse zu verspotten, die in einer Methode "neu" ist.
final MockedConstruction<SubClass> mockedConstruction = mockConstruction(SubClass.class);
// Sie können die neue Klasse unten erhalten
// Da die erfasste Klasse verspottet ist, können Sie den Rückgabewert usw. mit when () ändern.
List
Da dies mein erster Beitrag ist, bin ich mir nicht sicher, ob ich ihn gut erklären kann.
Ich hoffe es hilft jemandem auch nur ein bisschen.
Die diesmal eingeführte Mock-Konvertierungsmethode ist nur ein Teil.
Sowohl MockedStatic
als auchMockedConstruction
haben verschiedene Arten von Konstruktoren, daher [Mockitos offizielle Dokumentation](https://javadoc.io/static/org.mockito/mockito-core/3.5.9/org/mockito/ Bitte beziehen Sie sich auf Mockito.html) und probieren Sie verschiedene Dinge mit IDE aus, z. B. Android Studio.
Recommended Posts