标签:java junit junit5 junit5-extension-model
我正在尝试为Junit5编写一个类似于Junit4的扩展,但是我没有意识到在新的(无状态)扩展系统中如何做到这一点.
之前版本中的想法是用户可以将信息传递到扩展类,从而改变其行为方式.这是一个伪代码段,大致显示了以前的用法:
public void MyTest {
// here I can define different behaviour for my extension
@Rule MyCustomRule rule = MyCustomRule.of(Foo.class).withPackage(Bar.class.getPackage).alsoUse(Cookies.class);
@Test
public void someTest() {
// some test code already affected by the @Rule
// plus, user has access to that class and can use it, say, retrieve additional information
rule.grabInfoAboutStuff();
}
}
现在,我知道如何操作JUnit 5扩展,使用什么生命周期等等.但我不知道如何让测试编写者有权使用JUnit5修改扩展的行为.任何指针赞赏.
解决方法:
从JUnit Jupiter 5.0.1开始,遗憾的是无法像JUnit 4中的规则那样以编程方式将参数传递给Extension.
但是,我正在努力在JUnit Jupiter 5.1中添加这样的支持.如果您愿意,可以按照以下问题:https://github.com/junit-team/junit5/issues/497
在此期间,将信息传递给扩展的唯一方法是扩展支持自定义注释并从那里提取用户提供的信息.例如,我允许用户在Spring Framework中的@EnabledIf
注释中提供自定义SpEL表达式,而我的ExecutionCondition扩展使用反射从注释中提取表达式.
标签:java,junit,junit5,junit5-extension-model 来源: https://codeday.me/bug/20190823/1698770.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。