ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何在Junit 5中替换@Rule注释?

2019-09-10 21:02:23  阅读:363  来源: 互联网

标签:java junit5 junit-rule


我在我的测试中使用了wiremock并且有这样一行代码:

@Rule
public WireMockRule wireMockRule = new WireMockRule(8080);

我想切换到Junit 5.所以我添加了下一个依赖项(使用gradle):

testCompile('org.junit.jupiter:junit-jupiter-engine:5.1.1')

但是当我尝试导入@Rule注释时没有任何建议.
我是否需要添加另一个junit依赖模块?或Junit5不支持规则?如果不是,我怎样才能更换@Rule注释以使测试再次起作用?
谢谢.

解决方法:

一般来说,你在JUnit 4中使用@Rule和@ClassRule所做的事情应该用@ExtendWithExtension完成,它们在JUnit 5中提供了一个非常接近的特性.
它作为标准JUnit生命周期钩子工作,但它是在Extension类中提取的.与@Rule类似,可以为测试类添加所需的许多扩展.

要处理这个问题,您可以采用以下几种方法:

>保持JUnit 4方式(JUnit 5拥有允许执行JUnit 3或4测试的JUnit Vintage部分).
>将@Rule重写为扩展名.
>使用@BeforeEach和@AfterEach钩子方法在每个类测试中完成WireMockRule(启动服务器,执行测试并停止服务器)的实际处理.
>使用第三个库,它以JUnit 5 Extension方式实现等效的WireMockRule,例如https://github.com/lanwen/wiremock-junit5

请注意,您的问题已在the JUnit 5 Issues中讨论过.

标签:java,junit5,junit-rule
来源: https://codeday.me/bug/20190910/1801325.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有