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

问题描述 投票:0回答:1

我有一个用注释@ Parameterized.Parameters标记的方法

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

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

@BeforeClass
final String xyz = System.getProperty("XYZ");

无论如何,我可以在myData中使用xyz,所以得到依赖于xyz的List?确保只在BeforeClass完成后才填充参数的东西?

java junit parameterized
1个回答
0
投票

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

因此,将“xyz”定义为静态final而不使用@BeforeClass注释:

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

它可以在myData()访问,具有该属性的价值。

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

© www.soinside.com 2019 - 2024. All rights reserved.