Heim >Java >javaLernprogramm >Wie setze ich die Ausnahmebehandlung in JUnit-Tests durch?
In JUnit erfordert das Testen von Code, der eine Ausnahme auslösen soll, einen sauberen und prägnanten Ansatz. Eine manuelle Prüfung auf Ausnahmen ist zwar möglich, aber nicht die idiomatische Methode.
In den JUnit-Versionen 5 und 4.13 können Sie die Annotation @Test(expected = ExceptionClass.class) verwenden über die Testmethode. Dadurch wird erwartet, dass die angegebene Ausnahme ausgelöst wird.
Beispiel:
@Test(expected = IndexOutOfBoundsException.class) public void testIndexOutOfBoundsException() { ArrayList emptyList = new ArrayList(); emptyList.get(0); }
Wenn Sie Bibliotheken wie AssertJ oder Google-Truth verwenden, können Sie diese verwenden ihre Behauptungen zur Validierung Ausnahmen.
AssertJ:
import static org.assertj.core.api.Assertions.assertThatThrownBy; @Test public void testFooThrowsIndexOutOfBoundsException() { assertThatThrownBy(() -> foo.doStuff()).isInstanceOf(IndexOutOfBoundsException.class); }
Google-Truth:
import static com.google.common.truth.Truth.assertThat; @Test public void testFooThrowsIndexOutOfBoundsException() { assertThat(assertThrows(IndexOutOfBoundsException.class, foo::doStuff)).isNotNull(); }
In JUnit-Versionen kleiner oder gleich 4.12 ist dies möglich Verwenden Sie Rule oder TryCatch, um Ausnahmen zu behandeln.
Verwenden von Rule:
@Rule public ExpectedException thrown = ExpectedException.none(); @Test public void testIndexOutOfBoundsException() { thrown.expect(IndexOutOfBoundsException.class); ArrayList emptyList = new ArrayList(); emptyList.get(0); }
Verwenden von TryCatch:
import static org.junit.Assert.assertEquals; @Test public void testIndexOutOfBoundsException() { try { ArrayList emptyList = new ArrayList(); emptyList.get(0); fail("IndexOutOfBoundsException was expected"); } catch (IndexOutOfBoundsException e) { assertEquals(e.getClass(), IndexOutOfBoundsException.class); } }
Das obige ist der detaillierte Inhalt vonWie setze ich die Ausnahmebehandlung in JUnit-Tests durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!