Chr*_*s B 421 java junit assert
有人知道为什么JUnit 4提供assertEquals(foo,bar)
但不提供assertNotEqual(foo,bar)
方法吗?
它提供assertNotSame
(对应assertSame
)和assertFalse
(对应assertTrue
),所以看起来很奇怪他们没有打扰包括assertNotEqual
.
顺便说一句,我知道JUnit-addons提供了我正在寻找的方法.我只是出于好奇而问.
Joa*_*uer 399
我建议你使用更新的assertThat()
样式断言,它可以很容易地描述所有类型的否定,并自动构建一个描述你期望的和断言失败时得到的东西:
assertThat(objectUnderTest, is(not(someOtherObject)));
assertThat(objectUnderTest, not(someOtherObject));
assertThat(objectUnderTest, not(equalTo(someOtherObject)));
Run Code Online (Sandbox Code Playgroud)
所有三个选项都是等效的,选择您认为最易读的选项.
要使用方法的简单名称(并允许此时序语法起作用),您需要以下导入:
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
Run Code Online (Sandbox Code Playgroud)
Ste*_*ner 150
assertNotEquals
在JUnit 4.11中有一个:https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.11.md#improvements-to-assert-and-assume
import static org.junit.Assert.assertNotEquals;
Run Code Online (Sandbox Code Playgroud)
Mik*_*unu 49
我不知道.Assert的API不是很对称; 为了测试对象是否相同,它提供assertSame
和assertNotSame
.
当然,写作时间不会太长:
assertFalse(foo.equals(bar));
Run Code Online (Sandbox Code Playgroud)
有了这样的断言,输出的唯一信息部分遗憾的是测试方法的名称,因此描述性消息应该单独形成:
String msg = "Expected <" + foo + "> to be unequal to <" + bar +">";
assertFalse(msg, foo.equals(bar));
Run Code Online (Sandbox Code Playgroud)
这当然是如此乏味,最好自己动手assertNotEqual
.幸运的是,将来它可能是JUnit的一部分:JUnit问题22
小智 13
我认为缺少assertNotEqual确实是不对称的,并且使JUnit的可学性有点差.请注意,添加方法时这是一个简洁的案例会降低API的复杂性,至少对我而言:对称性有助于统治更大的空间.我的猜测是遗漏的原因可能是人们要求这种方法的人太少了.然而,我记得甚至断言不存在的时候; 因此,我有一个积极的期望,最终可能会添加该方法,因为它不是一个困难的方法; 即使我承认有很多变通方法,甚至是优雅的变通办法.
我很晚才参加这个派对,但我发现这个形式:
static void assertTrue(java.lang.String message, boolean condition)
Run Code Online (Sandbox Code Playgroud)
可以用于大多数'不等于'的情况.
int status = doSomething() ; // expected to return 123
assertTrue("doSomething() returned unexpected status", status != 123 ) ;
Run Code Online (Sandbox Code Playgroud)
我正在使用jUnit4.12在java 8环境中使用JUnit
对我来说:即使我使用,编译器也无法找到assertNotEquals方法
import org.junit.Assert;
所以我改变了assertNotEquals("addb", string);
对Assert.assertNotEquals("addb", string);
因此,如果您遇到assertNotEqual
无法识别的问题,那么将其更改为Assert.assertNotEquals(,);
可以解决您的问题
归档时间: |
|
查看次数: |
163608 次 |
最近记录: |