ユニットテストでは、不正なプロパティ値の処理をテストする設定ファイルを上書きしています。 私は、Apache CommonsのIOを使用しています:Java copy-overwriteファイル。読み込み時に古いファイルを取得する
org.apache.commons.io.FileUtils.copyFile(new File(configDir, "xyz.properties.badValue"), new File(configDir, "xyz.properties"), false)
ファイルシステムを調べるとき、私はxyz.properties
が実際に上書きされていることがわかります - サイズが更新されたコンテンツは、xyz.properties.badValue
のものと同じです。
(FileReader
オブジェクトを使用して)プロパティオブジェクトにファイルを読み込むコードを通過するテストケースを完了すると、新しくコピーされたバージョンではなく、元のxyz.properties
ファイルのプロパティが取得されます。
私がファイルをシングルステップで調べて調べることで、ファイルシステムに書き込むタイミングの問題であることを除外できます。
コピーステップは何らかの形でファイルハンドルを保持していますか?もしそうなら、私は再びそれを解放するだろうか? もしそうでなければ、なぜこれが起こり、どうやってそれを解決するのか誰も知りませんか?
ありがとうございました。
コピーメソッドはすべてのハンドルを適切に閉じます。それ以上の情報がなければ、支援するのが難しいかもしれません。エラーを再現できる最小のテストケースはありますか? –