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() を static として宣言する必要があります。つまり、インスタンス変数 allfiles static を作成する必要があります。
これはjunitテストの一般的なシナリオだと思います..だから、誰かがこれを適切に行う方法を教えてもらえますか?