java中junit断言_断言Junit中的List

问题

如何在aJUnittest案例中对列表进行断言?不仅列表的大小,而且列表的内容。

#1 热门回答(114 赞)

我意识到这是几年前被问到的,可能这个功能不是那时候的。但是现在,这很容易做到:

@Test

public void test_array_pass()

{

List actual = Arrays.asList("fee", "fi", "foe");

List expected = Arrays.asList("fee", "fi", "foe");

assertThat(actual, is(expected));

assertThat(actual, is(not(expected)));

}

如果你使用hamcrest安装了最新版本的Junit,只需添加以下导入:

import static org.junit.Assert.*;

import static org.hamcrest.CoreMatchers.*;

#2 热门回答(18 赞)

这是一个传统的答案,适用于JUnit 4.3及更低版本。现代版本的JUnit在assertThat方法中包含内置的可读失败消息。如果可能的话,更喜欢这个问题的其他答案。

List a = resultFromTest();

List expected = Arrays.asList(new E(), new E(), ...);

assertTrue("Expected 'a' and 'expected' to be equal."+

"\n 'a' = "+a+

"\n 'expected' = "+expected,

expected.equals(a));

正如@Paul在对这个答案的评论中提到的那样,两个List是相同的:

当且仅当指定的对象也是列表时,两个列表具有相同的大小,并且两个列表中的所有对应的元素对相等。 (如果(e1 == null?e2 == null:e1.equals(e2)),则两个元素e1和e2相等。)换句话说,如果两个列表包含相同顺序的相同元素,则它们被定义为相等。此定义确保equals方法在List接口的不同实现中正常工作。

请参阅List接口的JavaDocs。

#3 热门回答(16 赞)

不要转换为字符串并进行比较。这对于性能不利。在junit中,在Corematchers内部,有一个匹配器=> hasItems

List yourList = Arrays.asList(1,2,3,4)

assertThat(yourList, CoreMatchers.hasItems(1,2,3,4,5));

这是我知道检查列表中元素的更好方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值