我正在为我的一种方法编写Java单元测试。方法声明是这样的:
public int convertToInteger() throws InvalidRomanNumberException
{
int result=0;
BaseRomanNumeral num1, num2;
int i=0;
if(!validOperation())
throw new InvalidRomanNumberException();
}
现在,我正在尝试编写两个单元测试。一种是测试是否抛出了正确的异常。另一个是确保写入转换发生。这是我的测试用例的样子
@Test
public void testRomanNumberConversion() {
String romanValue="MCMII";
RomanNumber num=new RomanNumber(romanValue);
assertEquals(1903,num.convertToInteger());
}
@Test(expected = InvalidRomanNumberException.class)
public void testInvalidRomanNumberExceptionThrown() {
String romanValue="MCMIIII";
RomanNumber num=new RomanNumber(romanValue);
num.convertToInteger();
}
对于这两个测试用例,我都会收到一条错误消息,提示未处理的InvalidRomanNumberException。仅当我向每个方法定义添加InvalidRomanNumberException时才解决此问题。但是我认为这不是正确的方法。只想与您其他人一起检查,这里的规范是什么?我应该如何解决此未处理的异常消息
由于它看起来像是InvalidRomanNumberException
一个已检查的异常,因此您必须将其括以atry-catch
或声明method throws InvalidRomanNumberException
。JUnit
是否,这是常态。
就是说,您expect
将要抛出的测试用例方法InvalidRomanNumberException
应该理想地声明它为throws
一个,因为用try-catch
测试来抑制它没有意义,因为测试用例将失败。另一方面,您希望不会引发异常的测试用例方法可以使用try-catch
环绕convertToInteger
方法,并且无论是否引发异常,该测试用例都应具有方法assert
的预期结果convertToInteger
。
JUnit测试用例的最终结果应该是测试通过还是失败。运行时发生异常将不会显示任何内容。JUnit测试用例一定不能崩溃。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句