• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Junit 5中@ParameterizedTest与@EnumSource结合使用

java 搞代码 4年前 (2022-01-05) 13次浏览 已收录 0个评论

今天小编就为大家分享一篇关于Junit 5中@ParameterizedTest与@EnumSource结合使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

概述

有时候业务代码里会根据一个枚举值来区分业务场景,比如说:

 public enum ActivityLimitEnum { LIMIT(1,"封顶"), UNLIMIT(0,"上不封顶"); }

如果编写单元测试来验证业务代码,至少需要写两个测试方法,一个验收封顶逻辑,一个验收不封顶逻辑。

 @Test @DisplayName("封顶") void testLimit() { } @Test @DisplayName("不封顶") void testUnLimit() { }

由于这两个场景只是区分封顶和不封顶,其他的都是一样的,如果写两个测试方法,testLimitte

来源gao!%daima.com搞$代*!码$网

stUnLimit方法里会有很多重复代码。这个时候Junit 5 @ParameterizedTest@EnumSource就可以派上用场了。

 @ParameterizedTest @EnumSource(ActivityLimitEnum.class) @DisplayName("封顶和不封顶") void test(ActivityLimitEnum activityLimitEnum) { if (ActivityLimitEnum.LIMIT.equals(activityLimitEnum)) { assertFalse(false); } else if (ActivityLimitEnum.UNLIMIT.equals(activityLimitEnum)) { assertTrue(true); } }

Junit 5在执行上面的test方法的时候,由于ActivityLimitEnum中有LIMITUNLIMIT两个枚举,先按照LIMIT类型执行一次test方法,再按照UNLIMIT类型再次执行test方法,共执行两次test方法,因此我们需要在test方法里,区分一下类型,按照实际情况编写assert代码进行验证即可。

我们用Intellij IDEA执行上面的单元测试,效果如下:

可以看到test方法确实执行了两次,LIMITUNLIMIT各执行一次。

如果枚举中的枚举值非常多,而单元测试里只是想验证其中部分枚举值,那可以用下面的方式:

 @ParameterizedTest @EnumSource(value = ActivityLimitEnum.class,names = {"LIMIT"}) @DisplayName("封顶和不封顶") void test(ActivityLimitEnum activityLimitEnum) { if (ActivityLimitEnum.LIMIT.equals(activityLimitEnum)) { assertFalse(false); } else if (ActivityLimitEnum.UNLIMIT.equals(activityLimitEnum)) { assertTrue(true); } }

这样就只会执行LIMIT枚举值对应的场景。

如果要在Junit 5里使用@ParameterizedTest@EnumSource,需要添加如下依赖:

  org.junit.jupiterjunit-jupiter-params5.2.0test

总结

以上就是Junit 5中@ParameterizedTest与@EnumSource结合使用的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Junit 5中@ParameterizedTest与@EnumSource结合使用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址