测试Junit是否捕获到异常

时间:2016-11-18 12:13:13

标签: java testing junit

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

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

所以,如果一切顺利,我的例外会打印在我的终端上。 但是我怎么测试呢?我无法使用它:(因为异常被捕获)

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

如何测试是否抛出InvalidParameterExeption?

2 个答案:

答案 0 :(得分:3)

你不会捕获未抛出的异常-_- 只是测试投掷异常方法'而不是捕捉'异常捕获'一个

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

答案 1 :(得分:0)

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

@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
  }
}