0

TDD アプローチをトレーニングしていますが、問題があります。IO 操作をテストする方法は? これまで junit を使用していましたが、外部ソース (データベース、ファイルなど) でのテストには使用しないでください。下手な英語でごめんなさい

4

2 に答える 2

1

これらの外部ソースの内部動作をテストすることはできませんが、結果を確認することはできます。

たとえば、ファイルへの書き込み:

テスト開始
書き込みたいデータを変数
に格納 ファイルにデータを書き込み ファイル
を読み込む 格納
したデータと同じかチェック
テスト終了

テストは最終結果を検証することなので、プロセスの一部を見失うことは必ずしも悪いことではありません。通常、外部ソース (ライブラリ、IO..) は十分にテストされていると想定できます。

于 2013-08-27T23:08:07.463 に答える
1

API を渡されるように変更するInputStreamOutputStream、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 に答える