επιστημηです。細かなネタで申し訳なし。
xUnitでテストするとき、通常はpublicなメソッドを呼んで
その結果を検証するわけですが、時としてメソッドを呼んだ後
'privateメンバが狂ってないか' あるいは 'privateメソッドは
正しく実装されたか' を知りたくなるのです。
Hoge を HogeTestでテストするとき、C++ならば
class Hoge {
private:
#ifdef TEST
public:
#endif
テスト時に覗きたいメンバ
};
だとか
class Hoge {
friend class HogeTest; // HogeTestには見せちゃる!
...
};
なんて姑息なワザが使えるけど、Java/C# の類ではアクセス限定子が
メンバ毎にくっつくので:
// C#
class Hoge {
#if TEST
public
#else
private
#endif
int secret_value;
#if TEST
public
#else
private
#endif
void secret_method();
...
}
なんてことになります。もう見てらんない。
なんぞ'ないす'なワザはありませんでしょうか?
# reflectionでハラワタ掻き出せばいいのはわかってます。
# やってはみたけどすっごく面倒。
テストできるように設計/実装しろ! てのもごもっとも。
ですが、ヘタすると隠すべきものをテストのためだけに
晒さなくてはなりませぬ。それはご勘弁ねがいたい、と。
-----:-----:-----:-----:-----:-----:-----:-----:-----:-----
FUKUDA (episteme) Fumiki -- magical, but never a magic...