矢崎です。
Kaoru Hosokawa さんwrote:
>
> public class SqlHandler {
> private String command;
>
> SqlHandler(String command) {
> this.command = command; // テストできない
> }
> }
>
> 「SQL コマンドの代入が正しく行われたかどうかテストできない」ということですね。
>
そのとおりです。
> >
> > そう考えると、少なくともget系のメソッドは、テスト用でしか
> > ないとしても、作ってよい、くらいはしたほうがいいのかもし
> > れませんね。
>
> そうですね。VXPでは、このようにしませんか?
>
> public class SqlHandler {
> private String command;
>
> SqlHandler(String command) {
> this.command = command;
> }
>
> /* testuse */ public String getCommand() {
> return command;
> }
> }
>
> 「テストのためだけのメソッド」の作成を許します。ただし、そのメソッドには、必
> ず、/* testuse */ とつけることとします。(これによって、このメソッドは、テス
> トに使用しているもので、本来の機能ではないことを明確にしています。)このメソッ
> ドは、refactoring などで、機能の一部に昇格することができます。この時は、/*
> testuse */ を必ずはずすこととします。
>
グッド・アイディアだと思います。また、ホソカワさんの先のヘルパクラス
のご提案とか、その他例えばReflectionを使う方法とか、他にもいろいろ
方法がありそうなので、それぞれのペアで、その時にやってみたい方法
を使ってみる、というのはどうでしょう?
--
矢崎博英 firo@....jp