当前位置: 首页 > 面试题库 >

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

薛修能
2023-03-14
问题内容

我在测试中使用Wiremock,并具有以下代码行:

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

我想切换到Junit5。因此,我添加了下一个依赖项(使用gradle):

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

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


问题答案:

从总体上看,你做了什么@Rule@ClassRuleJUnit
4中应该做@ExtendWithExtension该关联提供的JUnit
5.非常密切的功能
它可以作为标准的JUnit的生命周期挂钩,但它是在提取Extension类。与相似@RuleExtension可以为测试类添加所需的s个。


要解决此问题,您可以采用以下几种可能的方法

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

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



 类似资料:
  • 我需要添加另一个JUnit依赖的模块吗?或者规则在JUnit5中不受支持?如果没有,如何替换注释以使测试再次工作?

  • 编辑:我当前代码的部分是: 所有测试类都扩展了TestBase。我得到一个错误:

  • 问题内容: 我试图将字符串分成数组并替换为,但无法做到,我也尝试了String.replaceAll这样的东西。 我想提供一个通往JNI的路径,并且它只能以这种方式读取。 问题答案: 在这种情况下不要使用- 这是用正则表达式指定的,这意味着您需要更多的转义。这应该很好: 请注意,由于Java字符串文字中的原因,反斜杠加倍-因此此处涉及的 实际 字符串是“单反斜杠”和“双反斜杠”-而不是双倍和四倍。

  • 问题内容: 我想用注释替换XML applicationContext配置。 如何用固定的构造函数参数替换简单的bean? 范例: 我正在阅读有关@Value的一些解释,但我不太了解如何传递一些固定值… 部署Web应用程序时是否可以加载此bean? 谢谢。 问题答案: 我认为您所追求的是: 您还可能希望通过系统属性来配置这些文件。您可以使用注释通过和语法读取系统属性。 为此,您可以在注释中使用不同

  • 问题内容: 如何在Mockito和JUnit 5中使用注入? 在JUnit4中,我可以只使用Annotation。在JUnit5中没有注释吗? 问题答案: 有多种使用Mockito的方法-我将一一介绍。 手动地 无论JUnit版本是什么(或测试框架),都可以使用Works手动创建模拟。 基于注释 使用@Mock -annotation和相应的调用 来创建嘲笑的作品无论JUnit版本(或测试框架,对

  • 如何使用Mockito和JUnit 5的注射? 在JUnit4中,我可以只使用注释。JUnit5中没有注释吗?