As Brent says, the original error was because props wasn't initialised. However, the reason your test doesn't work is because you're using static fields. They should be instance fields, only the data()
should be static.
The following works:
@RunWith(value = Parameterized.class)
public class AllTests {
private String text;
private Properties props;
public AllTests(String text) {
this.text = text;
props = new Properties();
try {
// load a properties file
props.load(new FileInputStream(text));
} catch (IOException ex) {
ex.printStackTrace();
}
}
@Parameters
public static List<String[]> data() {
String[][] data = new String[][] { { "test.properties" } };
return Arrays.asList(data);
}
@Test
public void test() {
System.out.println(text);
}
}
JUnit calls the data()
method and then creates an instance of the AllTests
class for each value returned by the data()
method, with the constructor parameters which also come from the data()
method. Therefore your text and props fields should be instance fields.
So in your example, your @BeforeClass
was called before the constructor, hence the null pointer exception.