Java Junit-预期会引发异常,但不会引发任何异常
预期会引发异常,但不会引发任何异常,从而导致测试用例失败。如何解决这个问题。如果在查找阶乘时数字为负数,我想抛出一个异常 测试文件: public void testcalculatefactoriawithout of范围异常{ 阶乘阶乘=新阶乘; AssertThrowOutOfRangeException.class, ->因子计算因子-12; } 代码文件: 公共类阶乘{ 公共字符串计算系数数{ //如果数字小于1 试一试{ 如果数字<1 抛出新的OutOfRangeExceptionNumber不能小于1; 如果数字>1000 抛出新的OutOfRangeExceptionNumber不能大于1000; }捕获范围异常{ } } } 公共类OutOfRangeException扩展了异常{ 公共超出范围例外字符串str{ 超级明星; } }Java Junit-预期会引发异常,但不会引发任何异常,java,exception,junit,Java,Exception,Junit,预期会引发异常,但不会引发任何异常,从而导致测试用例失败。如何解决这个问题。如果在查找阶乘时数字为负数,我想抛出一个异常 测试文件: public void testcalculatefactoriawithout of范围异常{ 阶乘阶乘=新阶乘; AssertThrowOutOfRangeException.class, ->因子计算因子-12; } 代码文件: 公共类阶乘{ 公共字符串计算系数数{ //如果数字小于1 试一试{ 如果数字1000 抛出新的OutOfRangeExceptio
我期望输出会成功,但它会导致失败您的测试很好,问题在于您的代码没有抛出异常,或者更正确地说,抛出并捕获异常
从方法中删除catch-OutOfRangeException e子句并添加throws-OutOfRangeException,然后您的测试将通过您的测试很好,问题在于您的代码没有抛出异常,或者更正确地说,抛出并捕获异常
从方法中删除catch-OutOfRangeException e子句,并添加throws-OutOfRangeException,然后您的测试将通过当您的方法抛出异常时,您可以拥有如下所示的测试用例
@Test(expected =OutOfRangeException.class)
public void testCalculateFactorialWithOutOfRangeException() throws OutOfRangeException{
Factorial factorial = new Factorial();
factorial.calculateFactorial(-12);
}
然而,在您的情况下,您并没有在类中抛出异常,而是在catch块中处理它,如果您在方法中抛出异常,那么它将工作
class Factorial {
public String calculateFactorial(int number) throws OutOfRangeException{
//If the number is less than 1
if(number < 1)
throw new OutOfRangeException("Number cannot be less than 1");
if(number > 1000)
throw new OutOfRangeException("Number cannot be greater than 1000");
return "test";
}
}
当您的方法抛出异常时,您可以有一个如下所示的测试用例
@Test(expected =OutOfRangeException.class)
public void testCalculateFactorialWithOutOfRangeException() throws OutOfRangeException{
Factorial factorial = new Factorial();
factorial.calculateFactorial(-12);
}
然而,在您的情况下,您并没有在类中抛出异常,而是在catch块中处理它,如果您在方法中抛出异常,那么它将工作
class Factorial {
public String calculateFactorial(int number) throws OutOfRangeException{
//If the number is less than 1
if(number < 1)
throw new OutOfRangeException("Number cannot be less than 1");
if(number > 1000)
throw new OutOfRangeException("Number cannot be greater than 1000");
return "test";
}
}
你的括号对吗?看起来catch块在calculateFactorial方法之外为什么会有catch块?格式/缩进很难理解,但看起来您在两个位置抛出OutOfRangeException,然后捕获OutOfRangeException并将其吞下–也就是说,调用方永远不会看到OutOfRangeException。您的测试期望抛出异常,但您的代码永远不会从方法中抛出异常。此代码甚至不会编译。首先修复编译错误。旁注:。你真的打算进行这么大的计算吗?@jhell耶!!代码正确地括在括号内。我尽力只贴必要的部分。你的括号正确吗?看起来catch块在calculateFactorial方法之外为什么会有catch块?格式/缩进很难理解,但看起来您在两个位置抛出OutOfRangeException,然后捕获OutOfRangeException并将其吞下–也就是说,调用方永远不会看到OutOfRangeException。您的测试期望抛出异常,但您的代码永远不会从方法中抛出异常。此代码甚至不会编译。首先修复编译错误。旁注:。你真的打算进行这么大的计算吗?@jhell耶!!代码正确地括在括号内。我尽了最大努力只发布必要的部分。谢谢你的帮助。这真的很有帮助。谢谢你的帮助。这真的很有帮助。谢谢你宝贵的时间来回答这个问题。谢谢阿卡什很高兴知道这有帮助谢谢你宝贵的时间来回答这个问题。谢谢阿卡什很高兴知道这有帮助