最近、ファイルを取り込み加工して出力する単純なプログラムを作成しましたが。作業期間が限られていたこともあり、必要最低限のテストコードしか整備できませんでした。。
実装
App.java
public class App {
public static void main(String[] args) throws IOException {
String input_str = file_read();
input_str += "\n追記!";
file_output(input_str);
}
public static String file_read() throws IOException {
Path file = Paths.get("src/main/resources/input/test.txt");
return Files.readString(file, Charset.forName("UTF-8"));
}
public static void file_output(String value) throws IOException {
File output_file = new File("src/main/resources/output/test.txt");
FileWriter filewriter = new FileWriter(output_file);
filewriter.write(value);
filewriter.close();
}
}
テストコード
AppTest.java
public class AppTest {
@Test public void test_file_input() throws IOException {
assertEquals(
kusatest.App.file_read(),
Files.readString(Paths.get("src/main/resources/input/test.txt"))
);
}
@Test public void test_file_output() throws IOException {
for (File delete_file : new File("src/main/resources/output/").listFiles()) delete_file.delete();
kusatest.App.file_output("テストです");
assertEquals(
"テストです",
Files.readString(Paths.get("src/main/resources/output/test.txt"))
);
}
@Test public void test_app() throws IOException {
for (File delete_file : new File("src/main/resources/output/").listFiles()) delete_file.delete();
kusatest.App.main(null);
assertArrayEquals(
Files.readAllBytes(Paths.get("src/main/resources/output/test.txt")),
Files.readAllBytes(Paths.get("src/main/resources/output_check/test.txt"))
);
}
}
入力/出力/入力から出力の3パターンのテストコードです。社内外とファイル授受する場合は、対向システムとテストファイルを渡して事前に取り込めるか?確認することがあると思いますが、そこで取り込み確認できた場合は、それのファイルをテストの正常ケースとしてテストコードに含めています。少しずつ空き時間に整備していきたい。。