为什么JUnit没有提供assertNotEquals方法?

448

有没有人知道为什么JUnit 4提供了assertEquals(foo,bar)但没有提供assertNotEqual(foo,bar)的方法?

它提供了assertNotSame(对应于assertSame)和assertFalse(对应于assertTrue),所以它们没有包含assertNotEqual似乎很奇怪。

顺便说一句,我知道JUnit-addons提供了我要找的方法。 我只是出于好奇而已。


至少从JUnit 4.12开始,提供了assertNotEquals。 https://junit.org/junit4/javadoc/4.12/org/junit/Assert.html#assertNotEquals(double,%20double,%20double) - WebF0x
Junit的新版本提供了此功能。以下链接提供了一个不错的示例,说明如何使用assertEqualsassertNotEquals。 https://www.codingeek.com/tutorials/junit/a-complete-guide-to-junit-with-java-and-gradle/#6_assertions - Hitesh Garg
11个回答

-1

模块API的一致性,为什么JUnit没有提供assertNotEquals()的原因与JUnit从未提供以下方法的原因相同:

  • assertStringMatchesTheRegex(regex, str) vs. assertStringDoesntMatchTheRegex(regex, str)
  • assertStringBeginsWith(prefix, str) vs. assertStringDoesntBeginWith(prefix, str)

也就是说,在断言逻辑中提供特定的断言方法是没有止境的!

更好的做法是提供可组合的测试原语,如equalTo(...)is(...)not(...)regex(...),让程序员将它们拼接在一起以获得更好的可读性和可维护性。


3
有些原因,assertEquals() 存在。它不是必须的,但它确实存在。问题是关于缺乏对称性 - 为什么存在 assertEquals,而不存在其对应物? - foo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接