[JAVA] Une histoire d'essayer de s'entendre avec Mockito

Une histoire d'essayer de s'entendre avec Mokit

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.

environnement d'utilisation

À propos de la partie qui était en conflit avec Mockito

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 faire une méthode statique Mock

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

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

Au fait

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

finalement

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.

Recommended Posts

Une histoire d'essayer de s'entendre avec Mockito
Histoire d'essayer de faire fonctionner le fichier JAVA
Une histoire sur l'effort de décompiler les fichiers JAR
Une histoire sur la réduction de la consommation de mémoire à 1/100 avec find_in_batches
Une histoire sur la création de chemin PKIX a échoué lors de la tentative de déploiement sur Tomcat avec Jenkins
[PHP] Histoire de la sortie de PDF avec TCPDF + FPDI
Une histoire sur le développement de ROS appelé rosjava avec java
Une histoire bloquée avec NotSerializableException
Une histoire à laquelle j'étais accro avec toString () d'Interface qui était proxy avec JdkDynamicAopProxy
Une histoire confuse sur un opérateur ternaire avec plusieurs expressions conditionnelles
Une histoire de malentendu sur l'utilisation du scanner Java (mémo)
Avec podman dans docker, tout le monde veut s'entendre et utiliser docker avec un ordinateur partagé
Une histoire que j'ai eu du mal à défier le pro de la concurrence avec Java
Une histoire amusante coincée dans le désordre lors de la tentative d'importation de fx-clj
Comment démarrer avec Slim
[Note] Une histoire sur la modification des outils de compilation Java avec VS Code
Une histoire sur la connexion à un serveur CentOS 8 avec un ancien Ansible
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
Une histoire sur la difficulté à aligner un cadre de test avec Java 6
Une histoire sur la fabrication d'une calculatrice pour calculer le taux de monticule d'obus
Mémo à obtenir avec Struts2 + Ajax
Histoire de changer d'emploi d'un pasteur chrétien (apprenti) à un ingénieur web
Une note sur l'essai d'Oracle 11g + Spring Boot avec Vagrant + Docker compose
Hanashi a trébuché un peu sur le chemin en essayant d'étudier Java avec VScode
Une histoire sur la conversion des codes de caractères de UTF-8 en Shift-jis en Ruby
Une histoire sur l'envoi d'une pull request à MinGW pour mettre à jour la version libgr
Une histoire accro aux espaces réservés des modèles JDBC
J'ai essayé de démarrer avec Web Assembly
[Note] Comment démarrer avec Rspec
Une petite histoire addictive avec def initialize
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
SpringSecurity J'étais accro à essayer de me connecter avec un mot de passe haché (résolu)
L'histoire selon laquelle traiter d'anciennes dates est agaçante
Comment se moquer de chaque cas avec Mockito 1x
Notez que Junit 4 a été ajouté à Android Studio
Commençons par Java - Créez un environnement de développement ①
Une histoire accro à EntityNotFoundException de getOne de JpaRepository
Une histoire sur la prise en charge de Java 11 pour les services Web
[Rails] rails nouveau pour créer une base de données avec PostgreSQL
Comment obtenir un heapdump à partir d'un conteneur Docker
Une histoire qui a mis du temps à établir une connexion
Convertissez une chaîne en un tableau caractère par caractère avec Swift
Une histoire très utile sur la classe Struct de Ruby
Une histoire sur la création d'un Builder qui hérite du Builder
Transition vers un contrôleur de vue avec Swift WebKit
Comment démarrer avec Eclipse Micro Profile
Une histoire emballée avec le scanner d'entrée standard de Java
Essayez d'obtenir la clé API de redmine avec ruby
[Android] Deux façons d'obtenir un adaptateur Bluetooth
Ripper un CD en MP3 avec Ubuntu 18.04 LTS
Les débutants de Rails ont essayé de se lancer avec RSpec
Comment sortir un fichier de ressources avec spring-boot