测试是否使用Junit捕获异常

cygmwpex  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(191)

我将从一个代码示例开始;我必须测试一个处理数据包的函数。在这个函数中,数据包被打开,当它不包含所有预期的数据时,抛出一个InvalidParameterExeption并记录下来。

public void handleData(dataPacket) {
    try {
        analyseData(dataPacket);
    } catch (InvalidParameterException e) {
        e.printStackTrace()
    }
}

所以,如果一切顺利,我的异常会打印在我的终端上。但是我该如何测试呢?我不能使用这个:(因为拦截到例外状况)

@Test(expected = InvalidParameterExeption.class)
public void testIfFaultyDataPacketIsRecognised {
    handleData(faultyDataPacket);
}

如何测试是否引发了InvalidParameterExeption?

hgtggwj0

hgtggwj01#

您不会捕捉到未抛出的异常。只需测试“抛出异常”方法,而不是“异常捕捉”方法

@Test(expected = InvalidParameterExeption.class)
public void testIfFaultyDataPacketIsRecognised() {
    analyseData(faultyDataPacket);
}
0sgqnhkj

0sgqnhkj2#

理想情况下,你应该捕获并重新抛出异常。但是如果你不想这么做,那么为什么不像预期的那样在测试用例中捕获异常?

@Test
public void testIfFaultyDataPacketIsRecognised () {
  try {
      handleData(faultyDataPacket);
      Assert.fail("Fail! Method was expected to throw an exception because faulty data packet was sent.")
  } catch (InvalidParameterException e) {
      // expected
  }
}

相关问题