Index: [Article Count Order] [Thread]

Date:  Sat, 29 Apr 2000 23:54:54 +0900
From:  Kaoru Hosokawa <khosokawa@....com>
Subject:  [XP-jp:00317] test 	メソッドの呼ばれ方 Was:Re: JUnit  利用方法
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <B5312642.1279%khosokawa@....com>
In-Reply-To:  <B52BD0C8.1178%khosokawa@....com>
Posted:  Sat, 29 Apr 2000 23:54:02 +0900
X-Mail-Count: 00317

ホソカワです。

on 2000/04/25 11:55 PM, Kaoru Hosokawa at khosokawa@....com wrote:

> ホソカワです。ちょっと教えてください。
> 
> on 2000/04/21 6:19 PM, firo at firo@....jp wrote:
> 
>> 矢崎です。 

…

>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> 7.ConcreteTestCase完成。
>> 
>> import junit.framework.*;
>> 
>> public class ConcreteTestCase extends TestCase{
>> 
>> TestTarget aTestTarget;
>> 
>> public ConcreteTestCase(String name){
>> super(name);
>> }
>> 
>> public void setUp(){
>> aTestTarget = new TestTarget();
>> }
>> 
>> public void tearDown(){
>> aTestTarget = null;
>> }
>> 
>> public void testXXX(){
>> 
>> int wkInt;
>> String unitName;
>> 
>> aTestTarget.setNumber(0);
>> aTestTarget.setNumber(1000);
>> wkInt = aTestTarget.getNumber();
>> assertEquals(wkInt,1000);
>> 
>> aTestTarget.setName("TARO");
>> assertEquals("TARO",aTestTarget.getName());
>> 
>> }
>> 
>> public void testYYY(){
>> 
>> int wkInt;
>> String unitName;
>> 
>> aTestTarget.setNumber(0);
>> aTestTarget.setNumber(1000);
>> assert(0 != aTestTarget.getNumber());
>> 
>> aTestTarget.setName("TARO");
>> assert(! "HANAKO".equals(aTestTarget.getName()));
>> 
>> }
>> 
>> public void testZZZ(){
>> assertNotNull(aTestTarget.getName());
>> }
>> 
>> }
>> 
>> 
> 
> それで、実際にtestXXX(), testYYY(), testZZZ()をコールするのはだれなのでしょ
> うか?どのようなメカニズムで呼ばれるのでしょうか?
> 

石井さんのウェブページ
(http://member.nifty.ne.jp/masarl/article/testing-framework.htmlKent)「
Beck Testing Framework 入門」、読ませていただきました。参考になりました。あ
りがとうございます。

そこからの抜粋ですが、

抜粋ここから、

『(さらに) JUnit では Reflection の機能を使い、テストクラスの public メソッ
ドでかつ名前が test で始まるメソッドをすべてテストメソッドとし、各テストメソッ
ド用に対応するテストクラスのインスタンスを集めて TestSuite クラスに登録する
という便利な機能があります。』

抜粋ここまで。

矢崎さんのまだ説明されていない TestSuite の部分に以下のようなコードが入って
いるのではないでしょうか?

    TestSuite suite = new TestSuite(ConcreteTestCase.class);
    suite.run();

ConcreteTestCase.class から testXXX()、testYYY()、testZZZ() を見つけだし、登
録を行い、run() の実行時、それぞれの test メソッドが呼ばれるのですね。
Reflection を使ってどのように test メソッドを見つけるのはソースコードを読む
事になりますね。

-- 
Kaoru Hosokawa
khosokawa@....com