TDD アプローチをトレーニングしていますが、問題があります。IO 操作をテストする方法は? これまで junit を使用していましたが、外部ソース (データベース、ファイルなど) でのテストには使用しないでください。下手な英語でごめんなさい
質問する
310 次
2 に答える
1
これらの外部ソースの内部動作をテストすることはできませんが、結果を確認することはできます。
たとえば、ファイルへの書き込み:
テスト開始
書き込みたいデータを変数
に格納 ファイルにデータを書き込み ファイル
を読み込む 格納
したデータと同じかチェック
テスト終了
テストは最終結果を検証することなので、プロセスの一部を見失うことは必ずしも悪いことではありません。通常、外部ソース (ライブラリ、IO..) は十分にテストされていると想定できます。
于 2013-08-27T23:08:07.463 に答える
1
API を渡されるように変更するInputStream
かOutputStream
、jUnit コードに ByteArrayInputStream と を渡すようにByteArrayOutputStream
します。これらは簡単に設定/読み取りできます。
もちろん、本番コードを変更する必要がありますが、多くの場合、単純なリファクタリングでこれを実現できます。API はそのままにしますが、パブリック メソッドはリファクタリングされたメソッドを呼び出します。次に例を示します。
変化する
public void read(File file) {
// do something with contents of file
}
に
public void read(File file) {
read(new FileInputStream(file));
}
// test this method
public void read(InputStream inputStream) {
// do something with contents of inputStream
}
于 2013-08-28T00:19:44.657 に答える