在散列映射JUnit中断言键

时间:2014-09-25 18:39:52

标签: junit

我认为这很容易但是有人能告诉我如何测试HashMap以查看它是否在JUnit中有一些价值?

assertThat(myMap, ??);

我尝试过类似的事情:

assertThat(myMap, hasEntry("Key", notNullValue()));

...但是我无法编译它,因为我导入到hasEntry和notNullValue()是正确的。 有谁知道它们的正确导入pkg是什么?

4 个答案:

答案 0 :(得分:2)

您在hasEntry(Matcher<? super K> keyMatcher, Matcher<? super V> valueMatcher)之后。

底层实现位于IsMapContaining但是, 与Hamcrest中的大多数匹配器一样,它也可以通过hamcrest-library中的org.hamcrest.Matchers找到。

否则,您的语法正确,Matchers也定义notNullValue()

答案 1 :(得分:0)

检查密钥是否在地图中:

import static org.junit.Assert.assertTrue;
...
assertTrue(myMap.containsKey("Key"));

或者,要检查它是否具有非空值:

import static org.junit.Assert.assertNotNull;
...
assertNotNull(myMap.get("Key"));

答案 2 :(得分:0)

import static org.junit.Assert.AssertTrue;

assertTrue(myMap.containsKey("yourKey") && myMap.get("yourKey") != null)

答案 3 :(得分:0)

我不喜欢 assertTrue 方法,因为断言失败时的反馈非常有限。

可以像这样使用 assertThat 来完成:

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasEntry;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;


assertThat(myMap, hasEntry(is("Key"), notNullValue()));