Remarque - J'ai marqué 3 Je suis vraiment en difficulté Test d'une méthode avec où et mon test: p> AT J'ai aussi essayé Ma carte Conversion Ligne CODE> Numéros que je discute de ma question, vous devrez peut-être faire défiler vers la droite dans les extraits de code à voir.
en option.map () code> s. p>
extrayeurreference () code> renvoie un
Facultatif code> de type
obj code> et est une méthode privée. P>
Ligne n ° 1 code>, comme indiqué dans mon
accepter () code> méthode, objet
t code> a été traité et a eu son
transactatus code> avec succès. Cependant, à
ligne n ° 2 code> Je reçois une NPE lors de l'exécution du test ci-dessus. P>
PowerMockito.spy (statiqueconverter.class); Code > au lieu de
powermockito.mockstatique (staticconverter.class); code> selon https://github.com/powermock/powermock/wiki/mockito#mocking-static-method Mais je reçois le même NPE. P>
t code> à
StatusDataObj code> type. Donc, lorsque la carte appelle la carte
convert code>, je bout et retourner mon type. Cependant, à l'origine, je m'attendais à ce que
ligne n ° 3 code> prendrait en charge efficacement la carte code> appels code> sur le
facultatif code> retourné de
extrayantReference ( ) code>, puisque j'utilise un objet réel avec des valeurs définies, mais il doit y avoir une valeur null quelque part ailleurs? p> p>
3 Réponses :
Vous devez ajouter les classes au @preparfortest code> avec lequel vous travaillerez dans ce test:
@RunWith(PowerMockRunner.class)
@PrepareForTest(StaticConverter.class, ClassBeingTested.class)
Celles-ci sont incluses, j'ai mis à jour mon exemple de code. Obtenir le même NPE code>
Êtes-vous sûr que la première carte ne se transforme pas en option? Également sipresent fait partie d'une inerface en option, pas de flux. De plus, ce flux n'a aucune opération terminale, comment cela compilait-il / coureur?
La première carte se transforme en un en option code>.
est staticconverter.convert surchargé?
Nope, il n'y a qu'une seule méthode dans la classe code> Staticconverter Code>, et elle s'appelle convert code>.
Essayez de remplacer la référence de méthode J'ai eu des problèmes avec des références de méthodes moqueuses PowerMock, mais en l'laissant comme une méthode explicite, je pourrais réussir à se moquer de ces appels. P> statiqueconverter :: Convertir code> avec un appel de Lambda explicite à la méthode actuelle:
E -> statiqueconverter.convert (E) p>. p>.
persist code> était null. Je ne sais pas pourquoi la NPE était à
Line 2 Code>. P>
Votre code pourrait-il être présenté comme un exemple minimal, complet et vérifiable , s'il vous plaît? Lorsque j'essaie de le lire, je pense qu'il y a beaucoup d'inconnues.
Est-ce que
obj code> implémente
est égal à code> (et
hashcode code>) correctement? Sinon, je soupçonne que cela pourrait avoir une meilleure chance de travailler si vous stockez
getobj () code> dans une variable et utilisez-le dans les deux endroits.
@Andyturner Bon crier mais malheureusement le même résultat. J'ai mis à jour les extraits pour refléter le changement.
@ Olev.v. J'ai supprimé des appels de méthode et remplacés par des types de retour pour simplifier.
Pouvez-vous montrer comment vous annotant la classe de test?
@Maciejkowalski mis à jour. J'ai inclus
@preparfortest ({classbeingtestheest.class, staticconverter.class}) code> dans mon code, si c'est ce que vous êtes après :)
Essayez de remplacer la référence de la méthode
staticconverter :: Convertir code> avec un appel explicite en Lambda à la méthode actuelle:
E -> statiqueconverter.convert (E) code>.