我正在创建一组 junit 测试类,所有这些类都从相同的输入数据文件中读取。我创建了一个如下的测试套件,但发现我会在每个测试类中复制文件名。
那么,如何在不重复代码的情况下做到这一点..
@RunWith(Suite.class)
@SuiteClasses({SomeTests.class,someOtherTests.class})
public class AllTests{
}
-------------------
public class SomeTests{
private String[] allfiles;
public SomeTests() {
allfiles = new String[] {"data1.txt","data2.txt"};
}
@Test
public void testXX1(){
//
}
@Test
public void testXX2(){
//
}
}
public class someOtherTests{
private String[] allfiles;
public someOtherTests() {
allfiles = new String[] {"data1.txt","data2.txt"};
}
@Test
public void testYY(){
//
}
}
我想我必须创建另一个类以将文件名作为字符串数组提供..以便测试类可以allfiles
通过调用getFileNames()
静态方法来初始化变量,并将其与 BeforeClass 注释相结合
public class FileNames {
public static String[] getFileNames() {
return new String[]{"data1.txt","data2.txt"};
}
}
public class SomeTests{
private String[] allfiles;
public SomeTests() {
}
@BeforeClass
public void setUp(){
allfiles = FileNames.getFileNames();
}
@Test
public void testXX1(){
//
}
@Test
public void testXX2(){
//
}
}
但我不确定这是正确的方法。这将需要将 setUp() 声明为静态,这意味着我必须将实例变量 allfiles 设为静态!
我认为这是junit测试中的常见场景..所以有人可以告诉我如何正确地做到这一点吗?