我有这种方法

@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(String a, String b, String c, String 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代替。

假设coreTuple4[]类型(如果不是,请在问题中包括实际类型),您可以执行以下操作:

@TestFactory
Stream<DynamicTest> dynamicTestsFromStream() throws IOException {
    initialize();

    return Arrays.stream(core) // Stream<Tuple4>
            .map(tuple -> DynamicTest.dynamicTest(
                    "test " + tuple.c,
                    () -> { Assert.assertTrue(false); }
    ));
}

10-08 04:04