al3*_*l3c 7 junit5 junit5-extension-model
我刚刚开始编写一些 junit5 测试和扩展。
我很快就遇到了我认为的问题:我如何告诉 junit5ExtensionB需要ExtensionA在场?
例如,我有一个“基本”扩展ExtensionA,它启动数据库并进行一些初始化,这对于某些测试来说已经足够了。
我还ExtensionB“需要”完成一些工作ExtensionA,主要是从商店获取一些对象,然后解析一些参数。
显然,每当我想要扩展 BI 时,也需要扩展 A 存在。有办法强制吗?我尝试过用@ExtendWith(A.class)类进行注释ExtensionB,但这似乎没有效果。
有办法实现我所需要的吗?
或者我只是以错误的方式使用 junit5,应该只使用一个扩展来为我做所有事情?
声明一个组合注释以可重用的方式组合多个注释:
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@ExtendWith({ DatabaseExtension.class, WebServerExtension.class })
public @interface DatabaseAndWebServerExtension {}
Run Code Online (Sandbox Code Playgroud)
扩展按照声明的顺序进行注册。
然后,您可以使用此注释而不是两个单独的注释:
@DatabaseAndWebServerExtension
public class MyDbTest {}
Run Code Online (Sandbox Code Playgroud)
有关确切语义,请参阅《JUnit 5 用户指南》中有关声明性扩展注册的部分。
| 归档时间: |
|
| 查看次数: |
1440 次 |
| 最近记录: |