在不同的JUnit测试中管理检查的异常

加祖比

我正在为我的一种方法编写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时才解决此问题。但是我认为这不是正确的方法。只想与您其他人一起检查,这里的规范是什么?我应该如何解决此未处理的异常消息

CKing

由于它看起来像是InvalidRomanNumberException一个已检查的异常,因此您必须将其括以atry-catch或声明method throws InvalidRomanNumberExceptionJUnit是否,这是常态。

就是说,您expect将要抛出的测试用例方法InvalidRomanNumberException应该理想地声明它为throws一个,因为用try-catch测试来抑制它没有意义,因为测试用例将失败。另一方面,您希望不会引发异常的测试用例方法可以使用try-catch环绕convertToInteger方法,并且无论是否引发异常,该测试用例都应具有方法assert的预期结果convertToInteger

JUnit测试用例的最终结果应该是测试通过还是失败。运行时发生异常将不会显示任何内容。JUnit测试用例一定不能崩溃。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章