2016-07-30 22 views
0

TestklasseMockito.thenReturn (...) in nicht

public class CollectionImplementationUnitTest { 

    CollectionImplementation colImp; 

    public void setup() throws Exception { 
    ... 
    colImp = Mockito.spy(new CollectionImplementation()); 
    ... 
    } 

    private String mockHistoryFromStrgyTable() { 
    String value1 = "myValue"; 
    return value1; 
    } 

    @Test 
    public void testgetinfo(){ 
    ... 
    Mockito.when(
     colImp.historyFromStrgyTable(
     Mockito.anyString(),Mockito.anyString(),Mockito.anyString() 
    ) 
    ) 
    .thenReturn(mockHistoryFromStrgyTable()); 

    CollectionsAccount Info = colImp.accountInfo(
     "string1","string2","string3", new IdentityAcc(), TableLst 
    ); 

    //sometestmethods and asserts 
    } 
} 

Klasse unter Test

public class CollectionImplementation { 
    ... 
    @Override 
    public CollectionsAccount accountInfo(("string1","string2","string3", new IdentityAcc(), TableLst)) { 
     DetailsHelper helper = new (db2, "string",getmethod()); 
     return helper.accountInfo("string1","string2", new IdentityAcc(), TableLst); 
    } 

    public String historyFromStrgyTable(){ 
    //contains a call to the data base 
    } 
} 

DetailsHelper

public class DetailsHelper{ 
    public CollectionsAccount accountInfo((String string1,String string2,String string3, new IdentityAcc(), TableLst)){ 
    ... 
    String paymentdetails = historyFromStrgyTable(); 
    } 
    public String historyFromStrgyTable(){ 
    //contains a call to the data base 
    } 
} 

zu arbeiten, wenn ich versuche, die Daten zu verspotten Für die Methode HistoryFromStrgyTable() ruft sie tatsächlich HistoryFromStrgyTable() auf Anzeige von mockHistoryFromStrgyTable().

Meine Testfälle werden auf dieser Linie versagt

Mockito.when(col_Imp.HistoryFromStrgyTable(Mockito.anyString(), 
    Mockito.anyString(),Mockito.anyString())).thenReturn( mockHistoryFromStrgyTable()); 

jemand mir dabei helfen kann. Ich verstehe nicht, was falsch ist. Ich habe auch die Methode mockHistoryFromStrgyTable() von privat auf öffentlich geändert, da mockito keine privaten Methoden vortäuschen kann.

+0

Hinweis: Bitte studieren Sie Java Coding Style Guidelines. Dein Code sieht so aus, als ob du grundsätzlich gegen jede Regel/Konvention versuchst, wie Variablen-/Methoden-Namen aussehen sollten ;-( – GhostCat

+0

Hey @GhostCat Tut mir leid. Soll ich die Klassen, Methoden und Variablen umbenennen. Oder kann Sie helfen mir dabei. [link] (http://stackoverflow.com/questions/38484623/create-a-junit-test-case-for-a-method-which-contains-a-acall-to- another-method-fr? noredirect = 1 # comment64376341_38484623) mit dem gleichen Problem. Mein Code sieht etwas wie das. Sie versucht, mir auch vorher zu helfen. Danke Mann – Random

+0

Variablennamen sollten CamelCase sein. Dann: nein "_" in Java Namen (außer ALL_UPPERCASE_CONSTANTS). Methodennamen starten auch lowCase. – GhostCat

Antwort

1

Dies passiert, weil Sie einen Spion verwenden, keinen Spott. Wenn Sie die "echte" Methode aufrufen, ist genau das, was Mockito Spione angeblich tun soll.

Um Ihren Spion zu stubben, ist dies die Syntax, die Sie verwenden möchten.

Mockito.doReturn(mockHistoryFromStrgyTable()).when(colImp). 
    historyFromStrgyTable(Mockito.anyString(),Mockito.anyString(),Mockito.anyString()); 

können Sie mehr Details zu diesem Thema in my post here finden.

+0

Wow !!! Lief wie am Schnürchen. Danke @DavidWallace – Random