我的一个try-catch构造函数的JUnit测试用例不工作?

7xllpg7q  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(136)

我试图将一个字符串传递给我的构造函数,看看它是否会引发NumberFormatException。

public Student(String datenZeile) {
  try {
    String[] teile = datenZeile.split(",");

    name = teile[0];
    matrikelnummer = Integer.parseInt(teile[1]);
    studiengang = teile[2];

  } catch (NumberFormatException e) {
    throw e;
  }
}

这是我的JUnit测试,但我不知道该把什么放在lambda表达式中。

class StudentTest {

    @Test
    void testGreta() {
        Student greta = new Student("Greta Graf,7-00-06,Medieninformatik,312");
        assertThrows(NumberFormatException.class, () -> 
    }

}
brc7rcf0

brc7rcf01#

由于抛出Exception的是构造函数,因此需要在assertThrows中的lambda内调用它:

@Test
void testGreta() {
  assertThrows(ArrayIndexOutOfBoundsException.class,
               () -> new Student("Greta Graf,7-00-06,Medieninformatik,312")
  );
}

同样,捕获并重新抛出NumberFormatException也没有意义,因为它不是一个checked异常。

相关问题