Solución:
Podrías usar el @Rule
anotación con ExpectedException
, como esto:
@Rule
public ExpectedException expectedEx = ExpectedException.none();
@Test
public void shouldThrowRuntimeExceptionWhenEmployeeIDisNull() throws Exception {
expectedEx.expect(RuntimeException.class);
expectedEx.expectMessage("Employee ID is null");
// do something that should throw the exception...
System.out.println("=======Starting Exception process=======");
throw new NullPointerException("Employee ID is null");
}
Tenga en cuenta que el ejemplo en el ExpectedException
docs es (actualmente) incorrecto: no hay un constructor público, por lo que debe usar ExpectedException.none()
.
me gusta el @Rule
respuesta. Sin embargo, si por alguna razón no desea utilizar reglas. Hay una tercera opción.
@Test (expected = RuntimeException.class)
public void myTestMethod()
{
try
{
//Run exception throwing operation here
}
catch(RuntimeException re)
{
String message = "Employee ID is null";
assertEquals(message, re.getMessage());
throw re;
}
fail("Employee Id Null exception did not throw!");
}
En JUnit 4.13 puedes hacer:
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
...
@Test
void exceptionTesting() {
IllegalArgumentException exception = assertThrows(
IllegalArgumentException.class,
() -> { throw new IllegalArgumentException("a message"); }
);
assertEquals("a message", exception.getMessage());
}
Esto también funciona en JUnit 5 pero con diferentes importaciones:
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
...
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)