我有 4 个测试,每个测试都有自己的方法源,但它们之间的唯一区别是一个参数,在每种方法中我以不同的方式初始化模拟。有没有办法可以传递多个方法源?例子: @ParameterizedTest @MethodSource("mSource1") public void testM1(MyMock m1, MyMock m2) { callMut(m1, m2, ENUM.VAL1); //same assertion } @ParameterizedTest @MethodSource("mSource2") public void testM2(MyMock m1, MyMock m2) { callMut(m1, m2, ENUM.VAL2); //same assertion } private static Stream<Arguments> mSource1() { when(myMock1.getX()).thenReturn("1"); //... } private static Stream<Arguments> mSource2() { when(myMock1.getY()).thenReturn("1"); //... }我正在寻找类似的东西:@ParameterizedTest@MethodSource("mSource1", "mSource2")public void testM1(MyMock m1, MyMock m2, MyEnum myEnumValue) { callMut(m1, m2, myEnumValue); //same assertion}
1 回答
Qyouu
TA贡献1786条经验 获得超11个赞
@MethodSource
根据javadocs ,可以接受任意数量的工厂方法:
公共抽象 String[] 值
用作参数来源的测试类方法的名称;不能为空。
因此,只需将它们放在花括号内,并确保它们也返回一个枚举值:
@MethodSource({"mSource1", "mSource2"})
不过,正如我所见,您可能需要将 when().then() 设置移动到测试本身,但那是您的 impl 的一个细节。
添加回答
举报
0/150
提交
取消