JUnit4 erwartete Ausnahme

Ich mache Szenario-tests mit JUnit4 für ein Projekt.

In einem der tests, die ich brauche, um zu überprüfen, ob eine erwartete Ausnahme. Mit JUnit4 ich dies mit der annotation.

 @Test(expected=...) 

Nun das problem ist, dass unter den code im test, dass die Ausnahme ausgelöst, gibt es einige weitere Anmerkungen, die ich brauche, um zu überprüfen, welche nicht durchgeführt. Ein Beispiel:

   @Test(expected=NullPointerException.class)
     public void nullPointerTest() {
         Object o = null;
         o.toString();
         assertTrue(false);
     }

Diese tests geht, denn es wird die nullpointerexception aber es ist offensichtlich ein assertion error mit der asserTrue(false) und so will ich es fehl.

Was ist der beste Weg, dies zu beheben? Eine Lösung könnte die folgende sein, aber ich weiß nicht, ob dies der richtige Weg, es zu tun.

@Test
public void nullPointerTest2() {
    boolean caught = false;
    try{
        Object o = null;
        o.toString();
    }
    catch(NullPointerException e)
    {
        caught = true;
    }
    assertTrue(caught);
    assertTrue(false);
}

Dieser zweite test ausfällt als vorhergesagt.

  • Warum machst du assertTrue(false)? Oder geht das hier stehen einige Ihrer real-Prüfung-code? Nicht, dass "echte" code vom code abhängt, bevor er wirft einen NullPointerException?
  • Ich bin mir nicht sicher, warum Sie würde wollen, dass. Es riecht nach schlechten test-design. Jede Prüfung sollte nur zum testen eine Sache.
  • Ich schlage vor, dass Sie splitten, diese in zwei separate tests.
InformationsquelleAutor user757926 | 2013-03-12
Schreibe einen Kommentar