gpt4 book ai didi

java - Hamcrest 匹配器中的泛型

转载 作者:太空宇宙 更新时间:2023-11-04 13:37:28 25 4
gpt4 key购买 nike

我不太确定我遇到的问题是否有一个简单的解决方案,但这里是代码摘录:

 Map<?,?> m = dbo.toMap();
assertThat(m, Matchers.<Object, Object>hasEntry(is(someKeyValue), is(notNullValue())));

我必须添加这些泛型来安抚编译器,但为什么不能更简单一点呢?为什么必须向 m 变量添加通配符捕获?为什么不能至少是:

 assertThat(dbo.toMap(), hasEntry(is((Object)someKeyValue), is(notNullValue())));

这是simple project 。在令我困扰的单元测试行中:

// this one doesn't quite work
DBObject dbo = returnSomeDBObject();
Map m3 = dbo.toMap();
assertThat(m3, hasEntry(is((Object)PSF_KEY), is(notNullValue())));

// but this one does
DBObject dbo2 = returnSomeDBObject();
Map<?,?> m4 = dbo.toMap();
assertThat(m4, Matchers.<Object, Object>hasEntry(is(PSF_KEY), is(notNullValue())));

最佳答案

您可以使用“原始”匹配器:

DBObject dbo = returnSomeDBObject();
Map m3 = dbo.toMap();

assertThat(m3, (Matcher)hasEntry(is("PSF_KEY"), is(notNullValue())));
<小时/>

顺便说一句,您可以使用Matchers.hasKey断言 map 有一个带有特定键的条目的方法:

assertThat(m3, (Matcher)hasKey("PSF_KEY"));

但是请注意,这与处理映射中的 null 值时的第一个断言在本质上并不相同。

关于java - Hamcrest 匹配器中的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31567656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com