山根です。
久々の投稿です。
> 田中伸也@京都工芸繊維大学と申します.
>
> JUnitでprivateなメソッドをテストする方法がわかりません.
> 皆様どのようにされているか教えていただけないでしょうか?
>
> 1. privateなメソッドはテストしない.
> 2. 一時的にpublicにしてテストする.
> 3. TestCaseを継承するクラス内で実装する.
僕は、1案を採ってます。
テストクラスは、同一パッケージに追いて、パッケージプライベートの
メソッドまでのテストに留めています。
昔は、2案を採っていたのですが、結局テストする度に、
コードに手が入るので、毎日テストしていると、
結構嫌になります。
多分、3は論外だと思います。f(^_^;
便乗質問になりますが、皆さん、ある任意のクラスが呼び出している
クラスの品質が悪い、またはスタブ状態であるといった
状況で、JUnitを使う場合どのように試験を行っていますか?
現状は、クラス内部でオブジェクトを生成する場合は、
パッケージプライベートのファクトリ用のメソッドを作って、
それを、テストクラスのインナークラスとして定義を行い、
ファクトリメソッドをオーバライドして、
呼び出し先クラスの振る舞いをテストコードが制御するようにして
試験を行っているのですが、これだと、
テストコードのコード量が、多くて多くて困ってます。
さらに、呼び先のクラスがfinalだったり、staticだったりすると、
呼び先のクラスが正常動作するまでテストコードを走らせられない
という状況になってしまいます。
XPを完全に導入すればこのような問題も無くなるのでしょうが、
僕の弁舌の才では上司を納得させる事が出来ず、
テスティングフレームワークとリファクタリングを導入するので
いっぱいいっぱいでした。f(^_^;
他クラスの品質に依存しない効率的なテストの仕方(または、テストを
見越したコーディング)ってご存知ですか?
それとも、そもそも考え方が誤っていたりしますか?
山根英次(Eiji Yamane)
E-Mail:e-yamane@....net(できればこっちに送って下さい)
e-yamane@....com(そのうち無くなるかもしれません)
URL :http://www.ne.jp/asahi/e/yamane/index.html