Index: [Article Count Order] [Thread]

Date:  Fri, 15 Oct 2004 15:03:51 +0900
From:  Taiki Matsuyama <taiki@....jp>
Subject:  [XP-jp:05075] Re: DbC on Java/C#...
To:  extremeprogramming-jp@....jp
Message-Id:  <416f6847.8357%taiki@....jp>
In-Reply-To:  <JP2004101514362412.11151296@....jp>
References:  <200410150511.i9F5BmN27653@....jp>	<JP2004101514362412.11151296@....jp>
X-Mail-Count: 05075


 松山と申します。

>> 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) :::