微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 JUnit4 中的多个异常测试 catch 子句中的特定异常

如何解决使用 JUnit4 中的多个异常测试 catch 子句中的特定异常

有没有办法测试一个特定的异常是否在带有多个异常的 catch 子句中抛出?像这样:

public void tryToHandleSample(double[] data,int id) {
    try {
        this.sample(data,id);
    } catch (IllegalArgumentException | UnsupportedOperationException | IllegalStateException | IllegalMonitorStateException exception) {
        exception.printstacktrace();
    }
}

我想我不能测试上面代码的原因是因为没有显式抛出异常,所以一个简单的解决方案是创建一个单独的 catch 子句,如下所示:

 public void tryToHandleSample(double[] data,id);
    } catch (IllegalArgumentException illegalArgumentException) {
        throw new IllegalArgumentException();
    } catch (UnsupportedOperationException unsupportedOperationException) {
        throw new UnsupportedOperationException();
    } catch (IllegalStateException illegalStateException) {
        throw new IllegalStateException();
    } catch (IllegalMonitorStateException illegalMonitorStateException) {
        throw new IllegalMonitorStateException();
    }
}

在我看来,这个解决方案不太优雅。所以我想知道如何测试第一个示例中是否抛出特定异常。

我的测试方法,测试是否抛出 UnsupportedOperationException,如下所示:

@Rule
public ExpectedException expectedException = ExpectedException.none();

@Test
public void test_tryToHandleSampleWithFaultyDataInput_generatesIllegalMonitorStateException() throws IllegalMonitorStateException {
    CryoKeeper cryoKeeper = new CryoKeeper(new HashCreatorImpl());
    double[] sample = {1,2,3,4,5,6};

    expectedException.expect(IllegalMonitorStateException.class);
    cryoKeeper.tryToHandleSample(sample,1);
}

哪个适用于第二个解决方案,但不适用于第一个。提前致谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。