は、私が実際のファイルの静的メソッドを模擬することはできません私はMockitoを使用していますユニットテストの目的でjava.nio.Files用のラッパーを作成する必要がありますか?
public class TempFileWritter{
public String writeToTempFile(byte[] value) throws IOException {
Path tempFile = Files.createTempFile(dir, prefix, suffix);
Files.write(tempFile, value);
return tempFile.toAbsolutePath().toString();
}
}
を作成せずにクラス以下のためのユニットテストを記述しようとしています。私の現在のソリューションは、java.nio.Filesクラスのラッパークラスを書いていると私は以下のように私のクラスにそれを注入することができるように:
MyAppFileUtilsクラス:
public class MyAppFileUtils {
public void write(Path file, byte[] value) throws IOException {
Files.write(file, value);
}
public Path createTempFile(Path dir, String prefix, String suffix) throws IOException {
return Files.createTempFile(dir, prefix, suffix);
}
}
修正クラスは次のとおりです。
public class TempFileWritter{
MyAppFileUtils fileUtils;
public void setFileUtils(MyAppFileUtils fileUtils) {
this.fileUtils = fileUtils;
}
public String writeToTempFile(byte[] value) throws IOException {
Path tempFile = fileUtils.createTempFile(dir, prefix, suffix);
fileUtils.write(tempFile, value);
return tempFile.toAbsolutePath().toString();
}
}
誰かが作成するクラスMyAppFileUtilsは、クラスjava.nio.Filesのメソッドを呼び出す以外は何もしないため、冗長です。それについていくつかアドバイスをいただけますか?
私のケースがより拡張性の高いコードになるためのアイデアやベストプラクティスを提案できますか? – Nghia
私は私の答えを更新しました。私が本当に意味するのは、この例でもっと拡張可能なのは、代替ファイルシステムを訴えることができるということです。将来メモリー内のファイルシステムを使用することが望ましい場合があります。 – Magnus
ご意見ありがとうございます。 JimFsを私のプロジェクトに含めることはできませんが、将来私はそれを試してみると思います。私は私のクラスのファイルシステムに直接アクセスする執筆intergationテストに終わる。 – Nghia