| 

.NET C# Java Javascript Exception

1
Also ich arbeite mit Junit und Mockito.
Ein Beispiel
Ich habe eine abstrakte Ober-Oberklasse

public abstract class SuperAbstractClass{
@Override
public void onEnter() throws IOException {}
}



Ich habe eine abstrakte Oberklasse, die von der ober-oberklasse erbt
public abstract class AbstractClass extends SuperAbstractClass{
protected void handleMessage(String message){
//doSomething
}
}



und ich habe eine klasse die von dieser erbt.
Dort wird eine MEthode von der ober ober Klasse überschrieben...und eine implementierte methode aus der oberklasse aufgerufen...

public class ClassA extends AbstractClass{
@Override
public void onEnter() throws IOException {
//doSomething
handleMessage("Hallo")
}
}



ich will jetzt prüfen/testen, ob diese Methode wirklich aufgerufen wird.
(handleMEssage("hallo"))
Da ich meine Testabdeckung auf 100% kriegen will!
Gibt es da irgendwelche Möglichkeiten?

Danke im Voraus!
News:
08.04.2014
tanzverfuehrung 147 8
2 Antworten
1
Nachdem es mir schon dreimal die Antwort gelöscht hat (durch ein Javascript Fehler der zu einer leeren Seite führte), nur folgende Code:

@Test
public void testHandleMessageException() throws IOException {
ClassA a = mock(ClassA.class);
when(a.handleMessage("test")).thenThow(new IOException("Testthrow"));
exception.expect(IOException.class);
exception.expectMessage("testthrow");
a.handleMessage("test");
}

@Test
public void testHandleMessageCodeCoverageException() {
ClassA a = mock(ClassA.class);
when(a.handleMessage("test")).thenThow(new IOException("Testthrow"));
try {
a.handleMessage("test");
fail("Die IOException wurde irgendwo abgefangen");
} catch (Exception e) {
assertThat(e.getMessage(), is("Testthrow"));
assertTrue(e instanceof IDException);
}
}


Erste Version wenn dein Code Coverage Tool es frisst, Jacoco nimmt es nicht und du musst Nummer 2 nehmen, dann erkennt es Jacoco auch.

Und niemals den Produktionscode mit solchen Tests belasten, dazu gibt es Mockito ;)
10.04.2014
Lord_Pinhead 778 8
0
ich prüfe einfach ob, in der handleMessage das passiert, was passieren soll.
Also zum BEispiel, wenn in der MEthode ein bestimmter String (bzw Object) übergeben wird, dass dann eine Exception geworfen wird oder so.

public abstract class AbstractClass extends SuperAbstractClass{
protected void handleMessage(String message){
if(message.equlas("hallo"))
throw new IOEception("FALSCH!");
}
}


der TEst dazu:
ClassA a = new ClassA();

@Test
public void onEnter_handleMessageException() throws IOException {
exception.expect(IOException.class);
exception.expectMessage("FALSCH!");
a.onEnter();
}
08.04.2014
tanzverfuehrung 147 8

Stelle deine Junit-Frage jetzt!