[JAVA] Eine Geschichte über den Versuch, mit Mockito auszukommen

Eine Geschichte über den Versuch, mit Mokit auszukommen

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.

Nutzungsumgebung

Über den Teil, der im Konflikt mit Mockito stand

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.

So erstellen Sie eine statische Methode Mock

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 controller = buildActivity(MainActivity.class); controller.create; ... }

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();

Apropos

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 constructed = mockedConstruction.constructed(); mockedConstruction.close();

Schließlich

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

Eine Geschichte über den Versuch, mit Mockito auszukommen
Die Geschichte des Versuchs, JAVA File zu bedienen
Eine Geschichte über das Bemühen, JAR-Dateien zu dekompilieren
Eine Geschichte über die Reduzierung des Speicherverbrauchs auf 1/100 mit find_in_batches
Eine Geschichte über die Erstellung von PKIX-Pfaden schlug fehl, als versucht wurde, mit Jenkins eine Tomcat-Bereitstellung durchzuführen
[PHP] Geschichte der Ausgabe von PDF mit TCPDF + FPDI
Eine Geschichte über die Entwicklung von ROS namens Rosjava mit Java
Eine Geschichte, die bei NotSerializableException steckt
Eine Geschichte, die von String () von Interface abhängig ist und von JdkDynamicAopProxy vertreten wird
Eine verwirrte Geschichte über einen ternären Operator mit mehreren bedingten Ausdrücken
Eine Geschichte über Missverständnisse im Umgang mit Java-Scannern (Memo)
Mit Podman im Docker möchte jeder miteinander auskommen und Docker mit einem gemeinsam genutzten Computer verwenden
Eine Geschichte, die ich mit Java nur schwer herausfordern konnte
Eine lustige Geschichte, die beim Import von fx-clj in einem Chaos steckt
Wie fange ich mit schlank an?
[Hinweis] Eine Geschichte über das Ändern von Java-Build-Tools mit VS-Code
Eine Geschichte über die Verbindung zu einem CentOS 8-Server mit einem alten Ansible
Eine Geschichte über das Erreichen der League Of Legends-API mit JAVA
Eine Geschichte über die Schwierigkeit, ein Testframework an Java 6 auszurichten
Eine Geschichte über die Herstellung eines Taschenrechners zur Berechnung der Muschelhügelrate
Memo mit Struts2 + Ajax zu bekommen
Die Geschichte des Jobwechsels von einem christlichen Pastor (Lehrling) zu einem Webingenieur
Beachten Sie, dass ich Oracle 11g + Spring Boot mit Vagrant + Docker Compose ausprobiert habe
Hanashi stolperte ein wenig auf dem Weg, Java mit VScode zu studieren
Eine Geschichte über das Konvertieren von Zeichencodes von UTF-8 in Shift-jis in Ruby
Eine Geschichte über das Senden einer Pull-Anfrage an MinGW, um die libgr-Version zu aktualisieren
Eine Geschichte, die süchtig nach Platzhaltern für JDBC-Vorlagen ist
Ich habe versucht, mit Web Assembly zu beginnen
[Hinweis] Erste Schritte mit Rspec
Eine kleine süchtig machende Geschichte mit def initialize
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
SpringSecurity Ich war süchtig danach, mich mit einem Hash-Passwort anzumelden (gelöst)
Die Geschichte, dass der Umgang mit alten Daten ärgerlich ist
Wie man jeden Fall mit Mockito 1x verspottet
Beachten Sie, dass Junit 4 zu Android Studio hinzugefügt wurde
Beginnen wir mit Java-Create a Development Environment ①
Eine Geschichte, die süchtig nach EntityNotFoundException von getOne of JpaRepository ist
Eine Geschichte über die Java 11-Unterstützung für Webdienste
[Rails] Rails neu, um eine Datenbank mit PostgreSQL zu erstellen
So erhalten Sie einen Heapdump aus einem Docker-Container
Eine Geschichte, die Zeit brauchte, um eine Verbindung herzustellen
Konvertieren Sie eine Zeichenfolge mit swift in ein zeichenweises Array
Eine sehr nützliche Geschichte über Rubys Struct-Klasse
Eine Geschichte über das Erstellen eines Builders, der den Builder erbt
Übergang zu einem View Controller mit Swift WebKit
Erste Schritte mit Eclipse Micro Profile
Eine Geschichte voller Javas Standardeingabescanner
Versuchen Sie, den API-Schlüssel von Redmine mit Ruby zu erhalten
[Android] Zwei Möglichkeiten, einen Bluetooth-Adapter zu erhalten
Rippen Sie eine CD mit Ubuntu 18.04 LTS auf MP3
Rails-Anfänger haben versucht, mit RSpec zu beginnen
So löschen Sie eine Ressourcendatei mit Spring-Boot