2

FileReader を使用していくつかの入力ファイルからデータをロードする Java コードを書いています。私は TDD をかなり頻繁に使用しており、使い終わったときにリーダーで close() を呼び出して適切にクリーンアップしていることを確認するテストをいくつか追加したいと考えています。残念ながら、これをテストする良い方法を思いつくことはできません。誰にも洞察がありますか?

編集して追加: モック オブジェクトを使用してクローズ コールを明示的にテストできることはわかっていますが、可能な場合は避けたいと思います。ファイルを閉じないことの影響を認識できるコードを書くためです。)

4

3 に答える 3

6

これを行う方法は、FileReader、または FileReader を作成する Factory をクラスに注入することだと思います。次に、単体テストで FileReader のモック バージョンを挿入し、適切なメソッドが呼び出されたことを確認できます。JMockを参照して、モック FileReader を作成し、close メソッド呼び出しの期待値を設定することをお勧めします。

于 2008-12-11T03:28:33.933 に答える
3

動作するはずの 1 つの方法は、例外をスローする必要がある FileReader を閉じた後に ready() メソッドをテストすることです。例えば:

FileReader fr = new FileReader("somefile");
// ... file reader activity
fr.close();

// After closing the reader, the ready() method should cause an IOException:
boolean isOpen = true;
try {
  isOpen = fr.ready();
} catch (IOException e) {
  isOpen = false;
}
assertFalse("FileReader is still open", isOpen);
于 2008-12-11T03:43:05.620 に答える
1

FileReader オブジェクトを呼び出しに渡すことができる場合は、オーバーライドされた close メソッドを持つカスタム FileReader を提供できます。つまり、閉じているかどうかをチェックするブール変数があります。その後、それを単体テストに使用できます。

于 2008-12-11T03:26:51.453 に答える