+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Mockito und "thenReturn"

  1. #1
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    Hallo Community,

    ich habe ein Problem mit dem Mock Framework Mockito. Bei folgenden Code erscheint der Fehler in Zeile 12: "The method thenReturn(TestTry.Handler<capture#2-of ?>) in the type OngoingStubbing<TestTry.Handler<capture#2-of ?>> is not applicable for the arguments (TestTry.StringHandler)":
    Java Code:
    1.  
    2. @RunWith(MockitoJUnitRunner.class)
    3. public class TestTry {
    4.     @Mock
    5.     private StringHandler sh;
    6.  
    7.     @Mock
    8.     private HandlerManager sp;
    9.  
    10.     @Test
    11.     public void test() {
    12.         when(sp.get()).thenReturn(sh);
    13.     }
    14.  
    15.     public class Handler<T> {
    16.  
    17.     }
    18.  
    19.     public class StringHandler extends Handler<String> {
    20.  
    21.     }
    22.  
    23.     public class HandlerManager {
    24.         Handler<?> handler;
    25.  
    26.         public Handler<?> get() {
    27.             return handler;
    28.         }
    29.     }
    30. }

    Wenn ich den von Eclipse vorgeschlagenen Cast, bzw. die Typänderung von sh auf
    C Code:
    Handler<?>
    durchführe, erscheint "The method thenReturn(TestTry.Handler<capture#2-of ?>) in the type OngoingStubbing<TestTry.Handler<capture#2-of ?>> is not applicable for the arguments (TestTry.Handler<capture#4-of ?>)".

    Ich weiß nicht, was ich machen soll. Der Manager kann nicht wissen, welchen Handler er beinhaltet und mein Code funktioniert prinzipiell. Nur der Test mag einfach nicht.

  2. #2
    User Megabyte Avatar von Timothy_Truckle
    Registriert seit
    01.08.2013
    Ort
    Wasserkuppe
    Fachbeiträge
    1.332
    Genannt
    86 Post(s)
    Blog-Einträge
    5
    Du benutzt einen Wildcard-Generic. Den kann der Compiler so nicht auflösen.

    Versuch mal 'nen expliziten Cast :

    when(sp.get()).thenReturn((Handler<String>)sh);

    bye
    TT

  3. #3
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    Nein, das ist auch nix .... Ich habe noch mal etwas gespielt und das <?> an der Get Methode entfernt. Damit geht es. Ich verstehe aber nicht, wieso Mockito da ein Problem hat.

  4. #4
    Global Moderator Viertel Gigabyte Avatar von SlaterB
    Registriert seit
    06.08.2008
    Fachbeiträge
    2.716
    Genannt
    291 Post(s)
    Hansa wird Meister

  5. #5
    User Megabyte Avatar von Timothy_Truckle
    Registriert seit
    01.08.2013
    Ort
    Wasserkuppe
    Fachbeiträge
    1.332
    Genannt
    86 Post(s)
    Blog-Einträge
    5
    Zitat Zitat von freezly Beitrag anzeigen
    Ich verstehe aber nicht, wieso Mockito da ein Problem hat.
    Nicht Mockito hat das Problem, sondern der Compiler.

    Bye
    TT

  6. #6
    User Kilobyte Themenstarter

    Registriert seit
    28.08.2013
    Fachbeiträge
    152
    Genannt
    7 Post(s)
    Zitat Zitat von Timothy_Truckle Beitrag anzeigen
    Nicht Mockito hat das Problem, sondern der Compiler.

    Bye
    TT
    Spitzfindigkeiten ... mein Code kann mit der Methode arbeiten ... also ist Mockito Schuld
    @SlaterB : Danke ... sowas ähnliches habe ich auch schon gefunden. Aber es ist tatsächlich wenig hilfreich, wenn es darum geht das Problem zu verstehen. Auch wenn ich den Typ bei "thenReturn" angebe hilft es ja nix.
    Java Code:
    1.     public class HandlerManager {
    2.  
    3.         public Handler<?> get() {
    4.             return new StringHandler();
    5.         }
    6.     }

    Das geht ... deswegen verstehe ich nicht, warum hier in Verbindung mit "thenReturn" ein Problem entsteht.

+ Antworten Thema als "gelöst" markieren

Direkt antworten Direkt antworten

In welchem Jahr endete der 2. Weltkrieg?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Deutsches Wort gesucht für das "Gegenteil" von "Event feuern"
    Von nillehammer im Forum Allgemeine Themen
    Antworten: 12
    Letzter Beitrag: 12.06.2014, 23:52
  2. Antworten: 6
    Letzter Beitrag: 27.10.2013, 19:36
  3. Antworten: 1
    Letzter Beitrag: 03.10.2013, 09:15
  4. "Open-Source soll das "Wrack" JavaFX retten"
    Von L-ectron-X im Forum Java
    Antworten: 3
    Letzter Beitrag: 18.07.2010, 13:03
  5. "Auch Skype von angeblicher "Firefox-Lücke" betroffen"
    Von L-ectron-X im Forum Sicherheit
    Antworten: 0
    Letzter Beitrag: 31.07.2007, 20:09

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •