为了账号安全,请及时绑定邮箱和手机立即绑定

具有多个方法源的 JUnit5 参数化测试

具有多个方法源的 JUnit5 参数化测试

幕布斯6054654 2021-12-30 17:32:30
我有 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 的一个细节。


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信