ほげにっき

hogedigoの日記

バランス大事

ユニットテストツールでフレームワークの一部機能を利用するために、フレームワークのprotectedメソッドをリフレクション呼び出ししたら、注意された。非公開メソッドを呼び出したらフレームワーク仕様が変わったときに動かなくなるから、というのが理由。


でも・・・。テストなんだからそんなにカタく考えなくても。。protectedだってサブクラスに対して公開してるメソッドなんだから、そうそう仕様変わらないでしょ。ちょっとした修正依頼もなかなか対応してくれないのに、そんなドラスティックな変更するかね??


そのメソッドが呼び出せないとすると自分でその機能を記述することになると思うんだけど、それこそフレームワーク側実装変更に対して同期がとれなくなりますよ。実装変更があって(失敗するべき)テストが成功し続けるよりも、ちゃんとエラーになって実装変更検知してくれる方がなんぼかマシだと思うんだけど。


それにそのフレームワークメソッドを含めたテストになるという大きなメリットもあるし・・・。


とまあ、トレードオフはいろいろあって、個人的にはprotectedメソッド呼び出した方がメリット大きいと思っているんだけど、説明しても納得してもらえんかった。バランス大事・・て説明するの大変だなぁ。


追記
結局採用された。理由は、自分で書くと手間かかるかかるから。客観的なメリット・デメリットを説明しても動かなかったのに、そんなしょーもない理由は通るんだ。やっぱり自分の説明力(説得力?)不足かしら。へこむわ。。