首先,我是一个java初学者,也是stacktrace的新手,所以请原谅我;).
我有一个静态Map,我的目标是将键/值对作为单独的参数传递到我的测试中。
这是我的简单Map:
Map<String, String> myMap=Map.ofEntries(
entry("foo1", "bar1"),
entry("foo2", "bar2"));
我想到了这样的事情:
@ParameterizedTest
@MethodSource("provideNamespaceGroupIdMapping")
void my_test(String key, String value) {
prepareFile(key);
prepareOtherStuff(value);
...
}
使用一个方法将每个条目作为单独的参数提供。所以大概是这样的:
private static Stream<Arguments> provideNamespaceGroupIdMapping() {
return Stream.of(
Arguments.of(
myMap.keySet().stream().toString(),
myMap.values().stream().toString()));
}
这将导致IndexOutOfBoundsException
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
就像我说的,我是个初学者。我尝试了一些其他的想法,但没有任何成功:)。
有没有一个解决方案,我想实现什么?
1条答案
按热度按时间2fjabf4q1#
您没有传递实际值。您需要收集流对象,然后将列表传递给
Argument.of()
当您使用provideNamespaceGroupIdMapping()方法作为源运行参数化测试时,Map中的每个键值对都应该作为单独的参数传递给my_test()方法。