2017-05-18 11 views
2

Wie teste ich unten Methode MockitoTest-void-Methode unter Verwendung von mokito

public void showArg(String ss) { 
    if(ss == null) { 
     throw new NullPointerException(); 
    }else if(ss.equals("")) { 
     throw new IllegalArgumentException(); 
    } 
    // Log.d("",""+ss); 
    if(ss.equals("xyz")) { 
     this.show(); 
    }else { 
     getResult(0); 
    } 
} 

In diesem Beispiel gibt es nichts verspottet werden soll. Ich möchte nur testen, dass die entsprechenden Methoden auf Basis von i/p aufgerufen werden.

+0

@Denny: Ich Methode showArg nenne („xyz“), aber wie kann ich testen, ob seine Methode Show nach dem Aufruf von() aufgerufen wird immer ? – Tushar

Antwort

3

Wenn Sie, dass diese Methode, um überprüfen wollen hieß (vorausgesetzt, es war die Öffentlichkeit), schlage ich vor, einen Spion mit ...

MyClass spy = Mockito.spy(myActualObject); 
spy.showArg("xyz"); 
Mockito.verify(spy).show(); 

Ausspionieren (statt spöttisch) bedeutet ein tatsächliches Objekt zu nehmen und " spioniere "darauf, indem du es in einer anderen Instanz einwickelst. Auf diese Weise können Sie tatsächliche Methoden aufrufen, aber auch überprüfen, was aufgerufen wurde und sogar modifizieren, was einige Methoden tun, ähnlich wie beim Spotten (der Unterschied ist, dass ein Schein kein darunterliegendes "echtes" Objekt hat, während ein Spion hat).

1

Wie bereits erwähnt, sollten Sie einen Spion verwenden, um solchen Code zu testen. Zusätzlich zu Ihrem Code sollten Sie auch testen, ob entsprechende Ausnahmen ausgelöst werden.

-Code Testgrenzfällen kann wie folgt suchen:

@Test(expected = NullPointerException.class) 
public void shouldThrowNullPointerExceptionWhenNullStringProvided() { 
    showArg(null); 
} 

@Test(expected = IllegalArgumentException.class) 
public void shouldThrowIllegarArgumentExceptionWhenEmptyStringProvided() { 
    showArg(""); 
} 
Verwandte Themen