【发布时间】:2022-01-27 09:11:20
【问题描述】:
我在我的 Junit 测试用例中使用 @MethodSource 注释,以便从另一个方法接收 Map
似乎@MethodSource 不支持“Map”对象。
这是我收到的错误: org.junit.platform.commons.PreconditionViolationException:无法将 java.util.HashMap 的实例转换为流:{1=Obj1, 2=Obj2}
你知道有没有办法像这个例子那样接收“地图”对象?
@ParameterizedTest
@MethodSource("hashMapProvider")
void testMyMapObj(Map<String, Object> argument) {
assertNotNull(argument);
Object obj1 = argument.get("1");
}
static Map<String, Object> hashMapProvider() {
Map<String, Object> map = new HashMap<>();
map.put("1", "Obj1");
map.put("2", "Obj2");
return map;
}
【问题讨论】:
-
如果测试方法中的参数是
Map,则在源方法中用作返回值Stream<Map<String, Object>> -
嗨,我用 Stream
-
static Stream<Map<String, Object>> hashMapProvider() { return Stream.of(Map.of("1", "Obj1", "2", "Obj2"), Map.of("3", "Obj3") ); } -
您好,Georgy 很抱歉,但我收到了一些转换错误。您能否像我上面的示例一样发布代码,以便我更好地验证?提前致谢