Index: [Article Count Order] [Thread]

Date:  Sat, 2 Sep 2000 06:39:37 +0900
From:  omura@....jp
Subject:  [XP-jp:00792] Re: (書籍	)Java パフォーマンス戦略
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <20000902063854omura@....jp>
In-Reply-To:  Your message of "Mon, 28 Aug 2000 10:55:23 +0900"             <20000828105710M.ono@....jp>
References:  <20000828105710M.ono@....jp>
Posted:  Sat, 02 Sep 2000 06:38:54 +0900
X-Mail-Count: 00792

はじめまして。
大村伸一と申します。ぷろぐらまーやってます。

XPには興味があって、このMLもずっと拝見させていただいていました。

ペア・プログラミングとか、いい体験になるだろうなと思うんだけど、
そういう機会がありません。

しばらく前までは、C++での開発をやっていたので、CppUnitを使ってました。
STLがなくて、自力で移植したんですよ。あんまり出来はよくなかったけど...

最近、Javaの仕事が始ったのですが、Javaについてはまだ初心者です。
で、とりあえず、JUniは使っていますが、なかなか楽しいですね。

で、話題の(?)「Java パフォーマンス戦略」ですが、
平鍋さん、小野さんのご発言を拝読し、これは是非読まなくてはと思い、
入手しました。
今、読んでいるところです。


実は、特に小野さんの

in "[XP-jp:00781] Re: (書籍)Java パフォーマンス戦略" 
at 2000/08/28 10:55:23 +0900 ono@....jp wrote:
>JUnit に関して
>
>	+ パッケージの切り方として、以下のものを推奨している。
>	  テスト対象となるクラス群の パッケージが jp.co.sony.service だったら
>	  テストクラスは test.jp.co.sony.service というパッケージに入れる。	
>	  これにより、テスト対象とテストとの位置関係が明確になる。

の部分に特に興味をひかれたので、その部分だけ真先に読んでみました。

というのも、吉田さんのメールにもありましたが、あのTest Infectedを読んだり、
いろいろ考えてみても、テスト用コードは同じパッケージにおくのが一番かな
と思っていたものですから。


で、本を読んでみてわかったのですが、ここでの前提は、世の中にあるideでは、
細かい設定が難しいので、こういうふうにしましょうということなんですね。

特にjarにするときに、テスト用のオブジェクトも一緒にjarに入ってしまうのは
困るということと、テスト用と製品版のclassを分けてjarするような細かい設定を
世の中の多くのideではできない (ってことはないと思うので、難しいということ
でしょうか) ので、packageで分けましょう。というはなしだと思います。

実は、しばらく前に、同じことで少し悩んでいました。
で、そのとき解決策として考えたのは (というほどたいした話でもありませんが) 
テスト用コードと製品コードは同じpackageにしたままで、classフアイルの
出力先ディレクトリを切替える方法でした。(javacの-dオプションを使います)

packageを違えるとprotected なメソッドのテストが大変になるので、やっぱり
こうするのが一番いいなと、自分では思っているのですが、開発の条件に
よっては本に書いてあるようなやり方のほうが楽だというようなことがある
のでしょうか。

そのあたりとても興味があるので、コメントをいただけると嬉しくおもいます。


おまけですけど、具体的には、こんな手順を想定しています。
表記は細かいところ妙ですけどわかりますよね。


たとえば、Target.javaとTargetTest.javaがあったとして、TargetTest.javaには
テストプログラムが入っています。


javac -d $(product) Target.java
javac -d $(tester) TargetTest.java

とコンパイルし、テストを実行するときは

java -cp $(product);$(tester);$(junit_jar) TargetTest

jarを作るときは

jar cvf Target.jar $(product)

てな具合です。

以上