2011-10-19 15 views
2

Tree supersizeMe(Tree input)というメソッドがあるとします。入力と戻り値の両方が再帰的なデータ構造であり、このメソッドはサイズ係数が約500の構造体を返します。したがって、inputが可能な最小の要素であれば、関数の戻り値には約500要素が含まれます。大きなデータ構造の単体テストの作成

これは私が現在持っている状況の簡単な説明であり、私は単体テストを書くことになっています。 もちろん、最小出力サイズが〜500要素であるため、私は実際にassertの記述に基づいてテストすることはできません。だからここに私の質問です:

このような方法をテストするにはどうすればよいですか?

PS:出力を外部プログラムを介して送信することで手動で出力を確認できます。そのような機能は私のAPIに含まれていますが、これらのクラスを使うことは単体テストという考え方と矛盾しますね。

編集:APIはJavaで開発されており、テストではjUnit4を使用します。

+0

どの言語とテストフレームワークを使用していますか? – utapyngo

+0

私はその情報を質問に追加しました。答えがjavaやjUnitに固有のものであれば、私とはまったく問題はありませんが、私はそのようなクラスをテストする一般的な概念を好むでしょう。 –

答えて

4

しかし、これらのクラスを使用することは単体テストのアイデアと矛盾しますか?

単体テストのアイデアは、単体のコードを単独でテストすることです。私は複雑な第三者コードを使って正当性を検証する方法を見ていません。

実際の問題は、変換がそれ自体で問題がどこにあるかということで、失敗したテストがあなたに良いアイデアを与えるだけの簡単な操作であるかどうかです。そうでない場合は、それを独立してテストできるより小さな操作に分解してください。

すぐに完全に理解できないテストを主張し、問題が真の単体テストではなく、サードパーティ製のAPIを使用することが許容できないコード行を正確に教えてくれるTDD純粋主義者がいるかもしれませんしかし、彼らはあなたが働いている、テストされたコードを楽しんでいる間、彼らの教義を吸うことができます。

+0

あなたの答えをありがとう!私はあなたが第三者コードについて正しいと思います。とにかくそれを独立してテストする必要があります。 –

関連する問題