gpt4 book ai didi

java - Junit5 从 @MethodSource 注解返回 Map

转载 作者:行者123 更新时间:2023-12-05 03:30:16 27 4
gpt4 key购买 nike

我在我的 Junit 测试用例上使用 @MethodSource 注释,以便从另一个方法接收 Map

@MethodSource 似乎不支持“Map”对象。

这是我收到的错误:org.junit.platform.commons.PreconditionViolationException:无法将 java.util.HashMap 的实例转换为 Stream:{1=Obj1, 2=Obj2}

您知道是否有办法像本例中那样接收回“ map ”对象?

@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<String, Object> , 用作返回值 Stream<Map<String, Object>>在源方法中:

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;

import java.util.Map;
import java.util.stream.Stream;

import static org.junit.jupiter.api.Assertions.assertNotNull;

class SimpleTest {

@ParameterizedTest
@MethodSource("hashMapProvider")
void test(Map<String, Object> argument) {
System.out.println(argument);
assertNotNull(argument);
}

static Stream<Map<String, Object>> hashMapProvider() {
return Stream.of(
Map.of("1", "Obj1", "2", "Obj2"),
Map.of("3", "Obj3")
);
}
}

关于java - Junit5 从 @MethodSource 注解返回 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70875913/

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