我想创建一个新的assertEquals,它将预期和实际的自定义pojo作为输入。

如何扩展assertEqualsJUnit library

我可以做的是实现一个compare方法,该方法返回一个布尔值并将其作为assertEquals甚至assertTrue的输入,但是创建自己的assertEquals似乎更优雅。

如果等于或引发AssertionError只是返回true的情况?

最佳答案

正如@Makoto所说,您可以使用自定义的Hamcrest Matcher。

另一个常见答案(这里只是更改类的Object#equals的定义)的缺点是,您将只有一种比较对象的方式,并且它必须与测试所需的内容完全匹配而不是班级用户所需要的。这两个需求可能相同也可能不同。通常,在测试中,我只需要声明一个或两个值,有时是几个,但通常不需要通过类的“自然” #equals方法进行测试的值。此外,我使用许多甚至没有明确覆盖#equals的类。在这些情况下,您将必须定义一个仅适用于测试情况的​​方法,而在语义上可能无法很好地表示域。

关于java - 扩展JUnit assertEquals,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27433916/

10-12 06:03