【问题标题】:creating a custom matcher to check exceptions in a list创建自定义匹配器以检查列表中的异常
【发布时间】:2015-03-03 10:58:59
【问题描述】:
我不确定如何创建自定义匹配器来验证存储在自定义异常中的信息。我需要一个自定义匹配器,因为我正在处理的系统中存储异常的方式是将它们添加到列表中。现在我需要验证该列表中的错误和错误消息。
我很确定这已经完成了,我只是不知道在哪里可以找到它
【问题讨论】:
标签:
unit-testing
junit
hamcrest
【解决方案1】:
尝试使用来自shazamcrest 的sameBeanAs 匹配器。它能够通过将它们的字段序列化为 JSON 来比较两个对象。不需要 getter、公共字段或生产类上的任何注释。您需要做的只是创建预期对象并将其与实际对象进行比较:
com.shazam.shazamcrest.MatcherAssert.assertThat(actualException, is(sameBeanAs(expectedException))
注意:请务必使用来自 shazamcrest 而不是来自 hamcrest 的MatcherAssert,否则sameBeanAs 会给出错误的诊断结果。
我不确定在堆栈跟踪方面比较异常将如何工作,堆栈跟踪只是Throwable 中的一个字段。如果这是一个问题,您在使用 sameBeanAs 时可能不得不忽略特定字段。
如果您仍想编写自己的 hamcrest 匹配器,here 是教程。