java—在截取所有测试并多次调用它们的同时,使用扩展对完整类进行注解

polhcujo  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(229)

热释光;dr我们有没有办法用一个扩展来注解一个完整的类,同时能够截获所有的测试并多次调用它们?
我们正在尝试将我们的一个项目从junit4更新到junit5(在这里找到链接),但是在从使用规则、运行程序和语句迁移到使用junit5扩展的等价物的过程中遇到了一些问题。
该项目对sql语句执行变异测试,其中每个测试方法运行多次,每个sql可能的变异一次,以便生成sql的代码覆盖率报告。目前,我们使用junit4规则来实现这一点,但是我们希望将其更改为支持JUnit5,因此需要将此规则更改为扩展。当前在规则中的工作方式是,当(@test)方法被调用时,它依次调用规则的apply()方法,然后我们使用它返回一个自定义语句对象。在这个语句中,我们创建突变体,然后多次调用base evaluate()方法,每个突变体调用一次,并监视和存储结果。
我们试图研究如何在junit5中使用扩展实现等效功能,但是重复和参数化(这两种方法都多次运行)提供的类似功能需要向它们应用的每个方法添加注解。我们更希望只使用@extendwith,然后能够截获所有测试方法调用,并将我们的多调用功能注入到所有这些方法中。我们研究了@repeated和@parameterized是如何通过testtemplate注解和'testtemplateinvocationcontextprovider'实现这一点的,但是在方法级别添加注解是我们想要避免的,因为通常用户需要基于整个类的覆盖率报告,而不是单个方法。我们还研究了扩展可以实现的各种junit5生命周期接口,如invocationinterceptor,但这只允许我们对被调用的方法调用一次procedure(),而我们需要多次这样做。
我们有没有办法用扩展来注解一个完整的类,同时能够截获测试并对其进行更改?
非常感谢您抽出时间!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题