Junit中处理异常的另一种方式:catch-exception

在Junit中处理异常的方式有很多种,比如:

3 ways of handling exceptions in JUnit. Which one to choose?
JUnit ExpectedException rule: beyond basics

有人推荐我尝试一下catch-exception,在这篇文章中我将会向大家介绍。简而言之,catch-exception库可以仅在一行代码中捕获异常,以后再对其进行处理。

通过Maven安装

为了快速进入正题,我使用了一个包含有一系列依赖关系JUnit, Mocito, Hamcrest, AssertJUnit Testing Demo项目作为示例,并添加了catch-exception

依存关系树如下:

准备开始

被测系统(SUT):

使用AssertJ断言的BDD-style方法catch-exception示例:

看起来不错——简单,可读性高。没有JUnit运行。请注意,我指定的那个在SomeClass类中抛出异常的方法。可想而知,我可以在一个测试中检验多个异常。但是这违背了测试中的单一任务原则,所以不推荐这种做法。另外,如果你是用Eclipse工作的话,也许这篇文章对你有用。

检查异常的原因

我相信下面的代码就没有必要讨论了吧:

使用Hamcrest来检查自定义异常

为了检查自定义异常,我用了在之前的文章中谈到的Hamcrest匹配代码。

测试部分:

总结

catch-exception看起来很棒,上手非常简单。比起在JUnit中的方法它具有很多优势。如果有机会我竟会深入的研究一下这个库,希望在现实中能有一个这样的机会。

如果你感兴趣,可以看一下我其他的文章:

英文原文由Rafal Borowiec发表在javacodegeeks赖信涛翻译,Importnew校对。



Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注