我不确定如何创建自定义匹配器来验证存储在自定义异常中的信息。我需要一个自定义匹配器,因为异常存储在我正在处理的系统中的方式是将它们添加到列表中。现在我需要验证该列表上的错误和错误消息。
我很确定之前已经完成了,我不确定在哪里寻找它
答案 0 :(得分:1)
尝试使用shazamcrest中的sameBeanAs
匹配器。它能够通过将其字段序列化为JSON来比较两个对象。不需要生产类的getter,公共字段或任何注释。您需要做的就是创建预期的对象并将其与实际对象进行比较:
com.shazam.shazamcrest.MatcherAssert.assertThat(actualException, is(sameBeanAs(expectedException))
注意:使用shazamcrest中的MatcherAssert
而不是来自hamcrest非常重要,否则sameBeanAs
会给出错误的诊断信息。
我不确定比较异常如何在堆栈跟踪方面起作用,而堆栈跟踪只是Throwable
中的一个字段。如果是问题,您可能必须在使用sameBeanAs
时忽略特定字段。
如果您仍想编写自己的hamcrest匹配器,here就是教程。