se moquer de méthode générique et s'étend dans le type de retour
Est-il possible de se moquer (avec mockito) méthode avec signature Set<? extends Car> getCars()
sans supprimer les avertissements? j'ai essayé:
XXX cars = xxx;
when(owner.getCars()).thenReturn(cars);
mais pas n'importe comment, je déclare cars
j'ai toujours obtenir une erreur de compilation.
e.g lorsque je déclare comme cette
Set<? extends Car> cars = xxx
- je obtenir la norme générique/mockito erreur de compilation
The method thenReturn(Set<capture#1-of ? extends Car>) in the type OngoingStubbing<Set<capture#1-of ? extends Car>> is not applicable for the arguments (Set<capture#2-of ? extends Car>)
quelle erreur de compilation en êtes-vous, pouvez-vous copier/coller?
Avertissement suppression, la compilation de l'échec, et les exceptions sont tous des choses différentes... je pense que vous pourriez être source de confusion ici.
j'ai essayé de tout expliquer précisément. donc, une fois de plus pour être clair. je veux que mon code compile. j'aimerais aussi que le code n'a pas d'avertissements et pas de
Double Possible de stackoverflow.com/questions/7366237/...
Je suis d'accord c'est un doublon de stackoverflow.com/questions/7366237/... sauf qu'on est vraiment plus, alors n'est-il pas le double. Mais il a plus de réponses. Et d'affirmer plus clairement le titre.
Avertissement suppression, la compilation de l'échec, et les exceptions sont tous des choses différentes... je pense que vous pourriez être source de confusion ici.
j'ai essayé de tout expliquer précisément. donc, une fois de plus pour être clair. je veux que mon code compile. j'aimerais aussi que le code n'a pas d'avertissements et pas de
@SupressWarning
. je n'ai jamais mentionné quoi que ce soit à propos des exceptions. espère que ça aideDouble Possible de stackoverflow.com/questions/7366237/...
Je suis d'accord c'est un doublon de stackoverflow.com/questions/7366237/... sauf qu'on est vraiment plus, alors n'est-il pas le double. Mais il a plus de réponses. Et d'affirmer plus clairement le titre.
OriginalL'auteur piotrek | 2012-05-11
Vous devez vous connecter pour publier un commentaire.
Utiliser le doReturn-lorsque d'autres stubbing syntaxe.
Système sous test:
et les cas de test:
Pas d'erreur ou d'avertissement suppression nécessaires
Je comprends votre dégoût de la syntaxe, je préfère quand-alors syntaxe. Je ne comprends pas ce que tu veux dire, il est impossible de le faire avec les génériques.
je parle du paramètre de doReturn. il est l'objet. il n'est pas lié au type qui doit être retourné. il n'y a pas de compilation de type au moment de la vérification. toutefois, si je n'ai pas de meilleure réponse, je vais prendre celui-ci, parce que, comme je l'ai dit - il fonctionne
En effet. Comme la documentation dit: "Méfiez-vous que lorsque(Objet) est toujours recommandé pour buter parce que c'est l'argument de type sécurisé et plus lisible (surtout quand cogner les appels consécutifs)." Mais depuis le moment de() la méthode renvoie une generisized OngoingStubbing<T> où T est le type de la méthode fournis lors de la(), et nécessite alors un thenReturn(T) s'appelle...je ne pense pas qu'il y est un moyen d'éviter cette erreur de compilation, il est censé se produire. Pourriez-vous vous débarrasser de la générique dans la méthode, vous êtes à la buter? Ce qui en fait un paramètre classe à la place?
Voir la réponse ici stackoverflow.com/a/19119230/193606 pour un typesafe alternative
OriginalL'auteur Tom Tresansky