在标记为@ Parameterized.Parameters的方法中读取变量

时间:2019-02-25 12:27:47

标签: java junit parameterized

我有一个标有@ Parameterized.Parameters批注的方法

2.46

现在作为标记为@BeforeClass的另一种方法的一部分,我阅读了SystemProperty xyz

@Parameterized.Parameters
public static List<Object[]> myData() {

如果仍然可以在myData中使用xyz,那么获取依赖于xyz的List?是否需要确保仅在BeforeClass完成后填充参数?

1 个答案:

答案 0 :(得分:0)

如果您只需要设置“ xyz”字符串-不要使用@BeforeClass,因为它只能在静态方法上使用(您的示例实际上是不正确的)。

因此,将“ xyz”定义为没有@BeforeClass批注的静态最终形式:

private static final String xyz = System.getProperty("XYZ");

可以在myData()中使用该属性的值来访问它。

不幸的是,如果您使用myData()在静态方法中设置“ xyz”,则无法在@BeforeClass中获得该值,因为该方法将在myData()之后调用(在这种情况下, xyz”将为空)。作为解决方法,您可以改用静态初始化块。