Index: [Article Count Order] [Thread]

Date:  Wed, 27 Sep 2000 12:56:19 +0900
From:  firo <firo@....jp>
Subject:  [XP-jp:00963] Re: テストのためだけのメソッド
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <00Sep27.125632jst.115204@....jp>
References:  <B5F39F13.3A0C%khosokawa@....com>
Posted:  Wed, 27 Sep 2000 12:56:31 +0900
X-Mail-Count: 00963

矢崎です。

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