松山と申します。
>> xUnitでテストするとき、通常はpublicなメソッドを呼んで
>> その結果を検証するわけですが、時としてメソッドを呼んだ後
>> 'privateメンバが狂ってないか' あるいは 'privateメソッドは
>> 正しく実装されたか' を知りたくなるのです。
>
>これは私も前から思っていました。みんなどうやっているのかな、と。
>どうしてもってときはリフレクション使ってますが、やっぱり結構面倒
>ですよね。
Java の場合ですが、ぼくはTestCase(またはServletTestCase) を
継承したクラスを用意して、その中にPrivate メソッド実行用の
メソッドを、executeMethod() というのが作ってあります。
中でやってることは、リフレクションでメソッド読んでるだけです。
/**
* プライベートメソッドの実行<BR>
* aParameterTypes には、Class[] として、引数の型一覧を与える.<BR>
* aParameterValues には、Object[] として、実際の引数一覧を与える.<BR>
* @param aObject インスタンス
* @param aMethodName メソッド名
* @param aParameterTypes 引数の型一覧
* @param aParamsterValues 引数一覧
* @return 返値
*/
protected Object executeMethod(Object aObject
,String aMethodName
,Class[] aParameterTypes
,Object[] aParameterValues) {
こんな感じで。
ただ、引数に与える型と値の指定が面倒なので、あまり使ってないというか、
public なメソッドのテストで済ませてしまう場合が多いですが(^^;
--
::: Taiki Matsuyama 松山大樹 taiki@....jp
taiki@....jp(Private) :::