当前位置: 首页 > 面试题库 >

为什么JUnit不提供assertNotEquals方法?

钱志强
2023-03-14
问题内容

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

它提供了assertNotSame(对应于assertSame)和assertFalse(对应于assertTrue),因此它们似乎没有包含在内就显得很奇怪assertNotEqual

顺便说一下,我知道JUnit插件提供了我正在寻找的方法。我只是出于好奇而问。


问题答案:

我建议您使用较新的assertThat()样式断言,该断言可以轻松描述各种否定形式,并在断言失败时自动构建对您的期望和得到的结果的描述:

assertThat(objectUnderTest, is(not(someOtherObject)));
assertThat(objectUnderTest, not(someOtherObject));
assertThat(objectUnderTest, not(equalTo(someOtherObject)));

这三个选项都是等效的,请选择最容易阅读的一个。

要使用方法的简单名称(并允许这种时态语法起作用),您需要以下导入:

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;


 类似资料:
  • 我很想知道为什么Java的可选不提供类似于流的方法。 接口的method javadoc声明: @apiNote此方法主要用于支持调试,您希望在元素流经管道中的某个点时看到这些元素 这几乎完全描述了我的用例: (返回 方法,上述所有内容都会转换为: 也可以这样做(参见此答案): 并将其与方法一起使用: 但我认为这是一个黑客,而不是的干净用法。 从Java 9开始,可以将< code>Optiona

  • 本质上,它包装了,确保了最大容量,并提供了一些其他有用的特性。更好的方法是直接将其实现为。 现在,为了方便起见,我认为最好实现,这样,如果您想要循环它,就可以使用增强的for-loops。(我的类还提供了方法,因此我认为是合理的。) 接口提供以下功能(省略了javadoc): null

  • 问题内容: 我想知道为什么接口不提供和方法。考虑以下类别: 它是 一手 牌的一种实现,因为您在玩交易纸牌游戏时可以手拿牌。 本质上,它包装了,可确保最大容量并提供其他一些有用的功能。最好将其直接实现为。 现在,为了方便起见,我认为实现起来会很不错,这样,如果您想对其进行循环,则可以使用增强的for循环。(我的课程也提供了一种方法,因此我认为该方法是合理的。) 该界面提供了以下内容(省略了javad

  • 问题内容: 查看Guava的ImmutableList(和其他一些类),您会发现很多重载的便捷方法(“按顺序返回包含给定元素的不可变列表”。)这些方法使用不同数量的参数: 一直到这一步: 我的一些同事认为这很愚蠢,想知道为什么不只有一种方法:。他们怀疑这是不正确的性能“优化”,属于“您认为自己比编译器更聪明”之类的东西。 我的直觉是Kevin Bourrillion等。出于真正的原因将这些方法放在

  • 问题内容: 我正在使用: Python 3.4.2 PyMongo 3.0.2 mongolab运行mongod 2.6.9 uWSGI 2.0.10 CherryPy 3.7.0 nginx 1.6.2 uWSGI启动参数: 我一次设置了MongoClient: 我尝试将JSON字典保存到MongoDB: 它通过执行与mongodb相同的代码路径的单元测试来工作。但是,当我使用HTTP POST

  • 问题内容: 我知道Set中只允许根据.equals()的任何对象的一个​​实例,并且如果您已经有一个等效的对象,则不应“需要”从Set中获取一个对象,但是我仍然想有一个.get()方法,该方法返回给定等效对象作为参数的Set中对象的实际实例(或null)。 关于为什么这样设计的任何想法/理论? 我通常必须通过使用Map并使其键和值相同或类似的方法来解决这个问题。 编辑:到目前为止,我认为人们还不了