IKo*_*IKo 18 java junit-rule junit5
我在测试中使用Wiremock,并具有以下代码行:
@Rule
public WireMockRule wireMockRule = new WireMockRule(8080);
Run Code Online (Sandbox Code Playgroud)
我想切换到Junit5。因此,我添加了下一个依赖项(使用gradle):
testCompile('org.junit.jupiter:junit-jupiter-engine:5.1.1')
Run Code Online (Sandbox Code Playgroud)
但是当我尝试导入@Rule注释时没有任何建议。我是否需要添加另一个依赖于junit的模块?还是Junit5不支持规则?如果没有,我该如何替换@Rule批注以使测试再次起作用?谢谢。
Arh*_*nen 12
JUnit 4 注释@Rule并且@ClassRule在 JUnit 5 中不存在。基本上有一个新的扩展模型,可用于实现具有相同功能的扩展。这些扩展可以与@ExtendWith注释一起使用。
junit-jupiter-migrationsupport模块中对 JUnit 4 规则子集的迁移支持有限。不幸的是,它仅限于ExternalResource和的子类Verifier。
在wiremock 正式支持JUnit 之前,您有一些解决方法:
从总体上看,你做了什么@Rule和@ClassRuleJUnit 4中应该做@ExtendWith和Extension该关联提供的JUnit 5.非常密切的功能
它可以作为标准的JUnit的生命周期挂钩,但它是在提取Extension类。与相似@Rule,Extension可以为测试类添加所需的s。
要解决此问题,您可以采用以下几种可能的方法:
@Rule为Extension。 WireMockRule使用@BeforeEach和@AfterEach挂钩方法在类的每个测试中执行(启动服务器,执行测试并停止服务器)完成的实际处理。 注意,您的问题已经在JUnit 5 Issues中讨论过。
| 归档时间: |
|
| 查看次数: |
9108 次 |
| 最近记录: |