我有一个用注释@ Parameterized.Parameters标记的方法
@Parameterized.Parameters
public static List<Object[]> myData() {
现在作为另一个标有@BeforeClass的方法的一部分,我读了SystemProperty xyz
@BeforeClass
final String xyz = System.getProperty("XYZ");
无论如何,我可以在myData中使用xyz,所以得到依赖于xyz的List?确保只在BeforeClass完成后才填充参数的东西?
如果你只需要设置“xyz”字符串 - 不要使用@BeforeClass
,因为它只能用于静态方法(你的例子实际上是不正确的)。
因此,将“xyz”定义为静态final而不使用@BeforeClass注释:
private static final String xyz = System.getProperty("XYZ");
它可以在myData()
访问,具有该属性的价值。
不幸的是,如果你使用myData()
在静态方法中设置“xyz”,则不可能在@BeforeClass
中获取值,因为在myData()
之后将调用该方法(在这种情况下,“xyz”将为null)。作为一种解决方法,您可以使用静态初始化块。