2016-10-05 5 views
1

ファイルシステムとインタラクトする(ファイルに書き込む)ユニットテストを作成したいと思います。 解決策私は、@Rule注釈とTemporaryFolderクラスを使用して、一時フォルダを作成している瞬間に適応しています。このファイルは単体テスト後に削除されます。モックフレームワークを使用せずにファイルに書き込むユニットテストコード

  • それは
  • 問題が発生した場合は、一時のファイル(同様にデータベースおよびネットワークへの)TU中にファイルシステムと対話することをお勧めではありません。しかし、この解決策は、2つの欠点を持っていますフォルダが正しく閉じられていない場合、このディレクトリは決して削除されません。

Mockitoのようなモックフレームワークを使用せずにファイルシステムとインタラクトする機能をテストするための単体テストを書く方法がありますか?

+0

Mockitoを使用していた場合は、どちらの方法でもファイルシステムと対話していないでしょう。あなたはそれにアクセスするか、それを嘲笑します(Mockito経由で、または配管コードを自分で書く)。 – kryger

答えて

1

確かに、ファイルシステムにアクセスするのは、のアイデアに従わないものです。単体テスト;しかし、いくつかのローカルファイルへの書き込みは、ネットワーク/データベース通信よりもはるかに高速です。

また、失敗したディレクトリをそのまま残すと、作成されたすべての出力に直接アクセスできます。デバッグの目的に役立つかもしれません。

最後に、他の層の一時ディレクトリの「消去」をいつでも開始することができます。これにより、「残り物」の可能性が最小限に抑えられます。

ショートストーリーショート:になります。ここにあります。

ローカルファイルシステムに書き込むときにテストが依然として簡単で役立つ場合は、そのようにしてください。他人が置いたルールに盲目的に従うだけで、あなたの働くアプローチを変えないでください。

一方、あなた(そしてあなたのチームメンバー!)が現在の解決策に不快感を感じている場合は、オプションのスペースを決め、セットアップで何かを変更したいかどうかを決めます。

関連する問題