java - junit 5 自定义参数化测试
问题描述
我正在使用具有自定义名称的 Junit 5 参数化测试,如下所示
@ParameterizedTest(name = PARAMETERIZED_TESTS_NAME_PLACEHOLDER)
wherePARAMETERIZED_TESTS_NAME_PLACEHOLDER
在其自己的实用程序类中定义
public static final String PARAMETERIZED_TESTS_NAME_PLACEHOLDER = "#{index} [{argumentsWithNames}]";
我面临的问题是,当我广泛使用参数化测试时,我的代码被这些@ParameterizedTest(name = PARAMETERIZED_TESTS_NAME_PLACEHOLDER)
.
所以我创建了一个自定义注释来解决这个问题
import java.lang.annotation.*;
import org.junit.jupiter.params.*;
@ParameterizedTest(name = PARAMETERIZED_TESTS_NAME_PLACEHOLDER)
@Inherited
public @interface CustomParametrizedTest {
}
但是当我在测试用例中使用它时,这个注释被忽略了
任何帮助,将不胜感激
解决方案
该@ParamterizedTest
注释似乎具有运行时的保留策略,表明它是在运行时需要和处理的。试试这个配置
@ParameterizedTest(name = PARAMETERIZED_TESTS_NAME_PLACEHOLDER)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface CustomParametrizedTest {
}
对我来说这不是自定义注释的默认保留策略似乎很奇怪,请参阅这篇文章的更多信息。
推荐阅读
- amazon-web-services - Lambda 函数工作,但不能与 API 网关一起工作
- ios - 为什么有响应与无响应的 MTU 不同?
- python - 从重复选择中构造元组
- python - 在 numpy 中加入 ndarray 中的所有数组
- c# - C# LibVLC,前 2 秒大多为灰色帧。解码错误?
- sql - 为每个给定父 ID 自动增加子订单项
- swiftui-navigationlink - onReceive(self.timer) 在 NavigationView 中不起作用
- sql - SQL - LEAD() 函数
- javascript - 如何在我的 javascript 代码上仅选择带有 keycode 的 abcdefg
- java - firebase realtime 不适用于 ganerate apk boundle