【问题标题】:Junit5 returning Map from @MethodSource annotationJunit5 从 @MethodSource 注释返回 Map
【发布时间】: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&lt;Map&lt;String, Object&gt;&gt;
  • 嗨,我用 Stream> 更改了方法 testWithExplicitLocalMethodSource 的参数,但现在我收到错误:org.junit.platform.commons.PreconditionViolationException:无法转换 java 实例。 util.HashMap 到流中:{1=Obj1, 2=Obj2}。你能建议另一种方式吗?提前致谢
  • static Stream&lt;Map&lt;String, Object&gt;&gt; hashMapProvider() { return Stream.of(Map.of("1", "Obj1", "2", "Obj2"), Map.of("3", "Obj3") ); }
  • 您好,Georgy 很抱歉,但我收到了一些转换错误。您能否像我上面的示例一样发布代码,以便我更好地验证?提前致谢

标签: java junit5


【解决方案1】:

如果您在测试方法中的参数是Map&lt;String, Object&gt;,则在源方法中用作返回值Stream&lt;Map&lt;String, Object&gt;&gt;

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")
        );
    }
}

【讨论】:

  • 非常感谢乔治!
猜你喜欢
  • 2018-06-04
  • 1970-01-01
  • 2020-11-10
  • 2023-02-08
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 2011-08-03
  • 2016-09-09
相关资源
最近更新 更多