【发布时间】:2021-02-07 13:37:34
【问题描述】:
我为 Hamcrest 和 Map 编写了这个测试程序,以使用 Hamcrest Matchers。 该程序使用 Hamcrest 作为独立程序(不使用 JUnit)。 为什么没有一个输出为真(匹配)? 如何修改这个测试程序以匹配 Map 中的键或值(输出为真)?
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.hamcrest.Matchers;
import org.hamcrest.collection.IsMapContaining;
public class TestMap {
public static void main(String[] args) {
Map<String, Integer> map = Stream.of(new Object[][] {
{ "data1", 1 },
{ "data2", 2 },
}).collect(Collectors.toMap(data -> (String) data[0], data -> (Integer) data[1]));
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("Matchers.hasKey(\"data1\") " + Matchers.hasKey("data1").matches("data1"));
System.out.println("Matchers.hasValue(1) " + Matchers.hasValue(1).matches(1));
System.out.println("IsMapContaining.hasKey(\"data1\") " + IsMapContaining.hasKey("data1").matches("data1"));
System.out.println("IsMapContaining.hasValue(1) " + IsMapContaining.hasValue(1).matches(1));
System.out.println("IsMapContaining.hasEntry(entry.getKey(), entry.getValue()) " + IsMapContaining.hasEntry(entry.getKey(), entry.getValue()));
}
}
}
输出是:
Matchers.hasKey("data1") false
Matchers.hasValue(1) false
IsMapContaining.hasKey("data1") false
IsMapContaining.hasValue(1) false
IsMapContaining.hasEntry(entry.getKey(), entry.getValue()) map containing ["data2"-><2>]
Matchers.hasKey("data1") false
Matchers.hasValue(1) false
IsMapContaining.hasKey("data1") false
IsMapContaining.hasValue(1) false
IsMapContaining.hasEntry(entry.getKey(), entry.getValue()) map containing ["data1"-><1>]
【问题讨论】:
-
答案对你有帮助吗,顺便说一句?
-
是的。谢谢:)。
标签: java collections hamcrest