我想创建一个新的assertEquals
,它将预期和实际的自定义pojo作为输入。
如何扩展assertEquals
的JUnit library
?
我可以做的是实现一个compare方法,该方法返回一个布尔值并将其作为assertEquals
甚至assertTrue
的输入,但是创建自己的assertEquals
似乎更优雅。
如果等于或引发AssertionError只是返回true的情况?
最佳答案
正如@Makoto所说,您可以使用自定义的Hamcrest Matcher。
另一个常见答案(这里只是更改类的Object#equals的定义)的缺点是,您将只有一种比较对象的方式,并且它必须与测试所需的内容完全匹配而不是班级用户所需要的。这两个需求可能相同也可能不同。通常,在测试中,我只需要声明一个或两个值,有时是几个,但通常不需要通过类的“自然” #equals方法进行测试的值。此外,我使用许多甚至没有明确覆盖#equals的类。在这些情况下,您将必须定义一个仅适用于测试情况的方法,而在语义上可能无法很好地表示域。
关于java - 扩展JUnit assertEquals,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27433916/