1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
JUnit's `fail()` and `assert*` methods throw an `AssertionError`, so using the
try/fail/catch pattern to test for `AssertionError` (or any of its super-types)
is incorrect. The following example will never fail:
```java
try {
doSomething();
fail("expected doSomething to throw AssertionError");
} catch (AssertionError expected) {
// expected exception
}
```
To avoid this issue, prefer JUnit's `assertThrows()` API:
```java
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertThrows;
@Test
public void testFailsWithAssertionError() {
AssertionError thrown = assertThrows(
AssertionError.class,
() -> {
doSomething();
});
assertThat(thrown).hasMessageThat().contains("something went terribly wrong");
}
```
|