ここから質問投稿すると、最大10000ポイント当たる!!!! >>

privateのメンバ変数を直接取得するユーティリティ。

以前、あるプロジェクトでクラスのprivateメンバ変数をgetterメソッドがないのに直接取得できるクラスを使っているのを見ました。

オブジェクトとメンバ変数とかを引数に渡すと、Object型で返却されるようなテスト用のユーティリティクラスみたいでした。

クラスやパッケージなどを確認しなかったので、もしかしたらそのプロジェクトで独自に作ったのかもしれません。
ただオープンソースとかで存在するのであればテストに便利なので利用したいと考えています。
できればsetterメソッドがないprivateメンバ変数に設定できるクラスがあるとよいのですが・・・。
ご存知でしたら是非おしえてください。


希望している経緯はWebアプリケーションのクラスを作成すると、コンテナのオブジェクトがないと動かない場合も多く、単体試験がやりにくいのです。
easymockなど色々ありますが、生成したオブジェクトを対象クラスに渡してあげる必要があるものが多く(staticメソッドは対象外とか)、テストのためにsetterメソッドを実装する必要があります。

個人的には単体試験をやりやすくするために、本番では使用しないメソッドになるけれど、上記のようなsetterメソッドを作成するのはよいと考えています。
依存性を少なくさせて(意味が違うかもしれませんが)、試験がしやすくなれば保守性もあがるし、バグの発生率も少なくなると思っています。

ただ人によっては本番で動かないメソッドがあるのはおかしいという人もいます(実際に言われました)。
確かにそういう考えもあるかと思いますし、以前は私もそう思っていました。

試験のためのメソッドをクラスに作成する考えについても(主にテスト用なのでprotectedで作成しています)、やめた方がいいなどのアドバイスを頂けると嬉しいです。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

JUnit-addonsのPrivateAccessorが便利です



参考URL:http://sourceforge.net/projects/junit-addons/
    • good
    • 0
この回答へのお礼

ありがとうございます。すばらしく意図しているものです。
しかも使い方を簡単にですが見てみると、以前のプロジェクトで見かけた使い方と同じように見えます。
たぶんこれを使っていたんだと思います。

助かりました。有難うございます。

お礼日時:2010/04/02 13:12

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング