2016-04-25 5 views
0

Ich schrieb einen Junit-Test, um meinen Code zu testen. Ich möchte, dass mein Junit-Testfall fehlschlägt, wenn in meinem Code eine Ausnahme auftritt. Ich habe versucht, eine assert-Anweisung zu verwenden, aber selbst wenn ich eine Ausnahme in meinem Code erhalte, passiert mein Junit-Testfall. Kann mir bitte jemand sagen, wie ich das erreichen kann? Vielen Dank.Wie kann ein Junit-Testfall fehlschlagen, wenn eine Ausnahme im Code vorhanden ist?

+0

scheitern Ich denke, Sie 'fail' verwenden? –

+4

Bitte zeigen Sie Ihren Code. JUnit sollte Tests automatisch fehlschlagen, wenn sie Ausnahmen auslösen. –

Antwort

1

können Sie behaupten, dass eine globale Variable „ausgenommen“ = null oder so ähnlich das und initialisieren Sie es, um einige Informationszeichenfolge im catch-Block zu entsprechen.

2

Ich empfehle dringend, dass Sie nur Ihre Funktionalität testen. Wenn eine Ausnahme ausgelöst wird, wird der Test automatisch fehlschlagen. Wenn keine Ausnahme ausgelöst wird, werden alle Tests grün angezeigt.

Aber wenn Sie immer noch den Test-Code schreiben möchten, die im Falle von Ausnahmen ausfallen sollte, so etwas wie: -

@Test 
public void foo(){ 
    try{ 
     //execute code that you expect not to throw Exceptions. 
    } 
    catch(Exception e){ 
     fail("Should not have thrown any exception"); 
    } 
} 
1

Sowohl die folgenden Tests werden ohne weitere Codierung fehlschlagen:

@Test 
public void fail1() { 
    throw new NullPointerException("Will fail"); 
} 

@Test 
public void fail2() throw IOException { 
    throw new IOException("Will fail"); 
} 
4

Eigentlich sollte Ihr Test nicht bestehen, wenn eine Ausnahme im Code ausgelöst. Natürlich, wenn Sie diese Ausnahme fangen und sie (oder irgendeine andere Ausnahme) nicht weiter werfen, wird der Test nichts davon wissen. In diesem Fall müssen Sie das Ergebnis der Methodenausführung überprüfen. Beispiel Test:

@Test 
public void test(){ 
    testClass.test(); 
} 

Methode, die den Test nicht bestehen wird:

public void test(){ 
    throw new RuntimeException(); 
} 

Methode, die den Test nicht

public void test(){ 
    try{ 
    throw new RuntimeException(); 
    } catch(Exception e){ 
    //log 
    } 
} 
Verwandte Themen