私はthisを見ましたが、本当に良い答えはありませんでした。クラスの動作をテストする必要がある場合もありますが、プライベートデータの一部を検査する必要があることを実際に主張するには、ユニットテスト(java):データをユニットテストに公開するpublicメソッドを記述する必要がありますか?
例:ファイルから読み込んだランダムな単語を返すクラスを作成しています。だから私は、このようなクラス設計された:私はwordsListを公開したくない
public class WordsDatabase {
private List<String> wordsList = new ArrayList<String>();
public WordsDatabase() {
fillWordsListFromFile();
}
private void fillWordsListFromFile() {...}
public String getRandomWord() {...}
}
を、今どのようにすべきIユニットテストgetRandomWord()は本当に私の辞書テキストファイルから私にランダムな単語を取得している場合はどうなりますか?
私がテストできるのは、単語を返すかどうかだけですが、単語がファイルからランダムに選択されているかどうかはわかりません。
私は一様分布のカイ二乗検定を行うことができるかどうかをテストするために、少なくとも私はwordsList.size()を何とか知っていなければなりません。
はおそらく、私があまりにも深いテストを実行するだけで喜ん...
EDIT:回答を
おかげで、チップを得ました。クラスがテストするのが難しいときは、そのデザインに何か問題があるためかもしれません。
正確には重複していませんが、この質問は非常に近いです:http://stackoverflow.com/questions/34571/how-to-test-a-class-that-has-private-methods-fields-or -inner-classes?rq = 1 –
私はそれを見ましたが、私はReflectionsを本当に混乱させるべきでしょうか? – caiohamamura
これはプログラミング理論/ベストプラクティスのためのスタックエクスチェンジサイトであるhttp://programmers.stackexchange.com/に属しています。 'Stack Overflow'(このサイト)は特定のプログラミング/コードに関する質問です。あなたの質問はユニットテスト理論/ベストプラクティス/アプローチに関するものです。 – mmcrae