问题描述
我有一个标有注解@ Parameterized.Parameters的方法
@Parameterized.Parameters
public static List<Object[]> myData() {
现在,作为标记为@BeforeClass的另一种方法的一部分,我阅读了SystemProperty xyz
@BeforeClass
final String xyz = System.getProperty("XYZ");
如果有的话我可以在myData中使用xyz,所以获取依赖于xyz的List? 是否需要确保仅在BeforeClass完成后填充参数?
1楼
如果您只需要设置“ xyz”字符串-不要使用@BeforeClass
因为它只能在静态方法上使用(您的示例实际上是不正确的)。
因此,将“ xyz”定义为没有@BeforeClass批注的静态最终形式:
private static final String xyz = System.getProperty("XYZ");
可以使用该属性的值在myData()
对其进行访问。
不幸的是,如果使用@BeforeClass
在静态方法中设置“ xyz”,则无法在myData()
获取值,因为该方法将在myData()
之后调用(在这种情况下,“ xyz”为null)。
作为解决方法,您可以改用静态初始化块。