Cómo detectar excepciones en JUnit

Dejan Ilic:

Mi prueba unitaria no captura la excepción debido a mi instrucción de retorno en el bloque catch. Al eliminar la declaración de regresar, se pasa la prueba. Quiero que mi prueba de la unidad de trabajo con la declaración de regresar si se produce la excepción.

También he intentado JUnit 5 cosas pero no se soluciona el problema.

Mi método:

public ArrayList<Action> parsePlaByPlayTable() {
    ArrayList<Action> actions = new ArrayList<>();
    Document document = null;

    try {
      document = Jsoup.connect(url).get();
    } catch (Exception e) {
      log.error(e.getMessage());
      return new ArrayList<>();
    }

    // if the exception occurs and there is no return in the catch block,
    // nullPointerException is thrown here
    Element table = document.getElementById("pbp"); 

    // more code. . .
}

Mi prueba:

  @Test(expected = Exception.class)
  public void testParsePlaByPlayTableInvalidUrl() {
    PlayByPlayActionHtmlParser parser = new PlayByPlayActionHtmlParser("https://www.basketbal-reference.com/oxscores/pbp/201905160GS.html");
    ArrayList<Action> actions = parser.parsePlaByPlayTable();
  }
Lino:

Debido a que usted está tragar la excepción en su bloque catch y devolver una lista vacía. La única manera de comprobar si se produjo la excepción es afirmar que la lista devuelta está vacía.

@Test
public void testParsePlaByPlayTableInvalidUrl() {
    PlayByPlayActionHtmlParser parser = new PlayByPlayActionHtmlParser("https://www.basketbal-reference.com/oxscores/pbp/201905160GS.html");
    ArrayList<Action> actions = parser.parsePlaByPlayTable();
    Assert.assertTrue(actions.isEmpty());
}

También es necesario eliminar (expected = Exception.class)de su @Testanotación. Debido a que una excepción no será lanzada.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=204171&siteId=1
Recomendado
Clasificación