创建自定义匹配器以检查列表中的异常

时间:2015-03-03 10:59:00

标签: unit-testing junit hamcrest

我不确定如何创建自定义匹配器来验证存储在自定义异常中的信息。我需要一个自定义匹配器,因为异常存储在我正在处理的系统中的方式是将它们添加到列表中。现在我需要验证该列表上的错误和错误消息。

我很确定之前已经完成了,我不确定在哪里寻找它

1 个答案:

答案 0 :(得分:1)

尝试使用shazamcrest中的sameBeanAs匹配器。它能够通过将其字段序列化为JSON来比较两个对象。不需要生产类的getter,公共字段或任何注释。您需要做的就是创建预期的对象并将其与实际对象进行比较:

com.shazam.shazamcrest.MatcherAssert.assertThat(actualException, is(sameBeanAs(expectedException))

注意:使用shazamcrest中的MatcherAssert而不是来自hamcrest非常重要,否则sameBeanAs会给出错误的诊断信息。

我不确定比较异常如何在堆栈跟踪方面起作用,而堆栈跟踪只是Throwable中的一个字段。如果是问题,您可能必须在使用sameBeanAs时忽略特定字段。

如果您仍想编写自己的hamcrest匹配器,here就是教程。