我有一些类似于以下的测试代码:
@Test
public void testEnums_AB() {
// arrange + act
var enums_1 = Arrays.stream(enumsA.values()).map(Enum::name).collect(Collectors.toSet());
var enums_2 = Arrays.stream(enumsB.values()).map(Enum::name).collect(Collectors.toSet());
// assert
Assertions.assertEquals(enums_1,enums_2);
}
@Test
public void testEnums_CD() {
// arrange + act
var enums_3 = Arrays.stream(enumsC.values()).map(Enum::name).collect(Collectors.toSet());
var enums_4 = Arrays.stream(enumsD.values()).map(Enum::name).collect(Collectors.toSet());
// assert
Assertions.assertEquals(enums_3,enums_4);
}
...等等。
我正在考虑如何简化模式以仅具有一次逻辑,例如:
@ParameterizedTest(name = "{index} => enum1={0},enum2={1}")
@MethodSource("parametersProvider")
public void testEnum(enum enum1,enum enum2) {
// arrange + act
var enumsBlah = Arrays.stream(enum1.values()).map(Enum::name).collect(Collectors.toSet());
var enumsFoo = Arrays.stream(enum2.values()).map(Enum::name).collect(Collectors.toSet());
// assert
Assertions.assertEquals(enumsBlah,enumsFoo);
}
但是(当然)该示例甚至无法编译。
有人想避免对这些枚举检查重复结构吗?