我有这个方法
@TestFactory
Stream<DynamicTest> dynamicTestsFromStream() throws IOException {
initialize();
return Stream.of(core).map(
str -> DynamicTest.dynamicTest("test" + str.toString(), () -> { Just for Testing > Assert.assertTrue(false); }));
}
我的core
数组包含Tuple4
类型的元素。 Tuple4(字符串 a,字符串 b,字符串 c,字符串 d)
。
当我尝试寻址名称(我想要String c
)时,我收到一个错误,在当前示例中我的
str
的结果是:Tuple4@4d50efb8、Tuple4@7e2d773b、Tuple4@2173f6d9
有人可以告诉我如何为 str 找到正确的索引吗?因为 get(int)
不起作用,因为我无法获取当前位置?
编辑
当我输入Stream.of("A","B","C").map(...);
该测试被赋予正确的名称“测试 A”...
那么我怎样才能给stream.of()
一个Array(Object)来命名测试呢?
最佳答案
使用Stream.of(SomeType[])
,您可能会面临获得仅包含单个元素(即数组)的流的风险。使用Arrays::stream
相反。
假设core
的类型为Tuple4[]
(如果不是,请在问题中包含实际类型),您可以执行以下操作:
@TestFactory
Stream<DynamicTest> dynamicTestsFromStream() throws IOException {
initialize();
return Arrays.stream(core) // Stream<Tuple4>
.map(tuple -> DynamicTest.dynamicTest(
"test " + tuple.c,
() -> { Assert.assertTrue(false); }
));
}
关于java - 将流与 TestFactory 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42765983/