为什么 JUnit 不提供 assertNotEquals 方法?

2022-08-31 04:30:41

有谁知道为什么JUnit 4提供而不是方法?assertEquals(foo,bar)assertNotEqual(foo,bar)

它提供(对应于)和(对应于),所以他们不打扰包括似乎很奇怪。assertNotSameassertSameassertFalseassertTrueassertNotEqual

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


答案 1

我建议你使用较新的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.*;

答案 2

在 JUnit 4.11 中有一个:https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.11.md#improvements-to-assert-and-assumeassertNotEquals

import static org.junit.Assert.assertNotEquals;

推荐