Index: [Article Count Order] [Thread]

Date:  Mon, 17 Mar 2003 18:59:16 +0900
From:  YAMAZAKI Susumu <yamazaki@....jp>
Subject:  [XP-jp:04232] Re: 浮動小数点演算や幾何演算のテスト
To:  extremeprogramming-jp@....jp
Message-Id:  <20030317185916C.yamazaki@....jp>
In-Reply-To:  <4.3.2-J.20030317171837.00ec3bf0@....jp>
References:  <20030312224705.0482.TERADA@....jp>	<20030315152136Q.hiranabe@....jp>	<4.3.2-J.20030317171837.00ec3bf0@....jp>
X-Mail-Count: 04232

山崎@東工大です。

From Shingo Nishikawa <s-nisikw@....jp>
> >私が感じているのは,多くの内部 assert は,メソッドを細かく分
> >割することで,外部表明に移行することが可能だいうことです.
> >現在は,ユニットテストの流行によってこの傾向が進んで来てい
> >る.ただし,うまく分割できないものは,やはり残るのではない
> >か,と思っています.それの代表例が先に上げた3つの分野です.
> 
>  大体において外部表明に移行することとが好ましい場合が多いので
> すが、スコープの観点からいくと外部表明の為にスコープが広がって
> しまうのがデメリットですね。
>  けっこう重要なprivateメソッドをJUnitでテストする為にスコープ
> をデフォルトスコープにするか、テストケース自体をインナークラスに
> するか・・・悩んだことがあります。

リフレクションを使えば private メソッドをテストすることができます。

-<Sample.java>--------------------------------------------------------
public class Sample {
    private boolean method() {
        return true;
    } }

-<SampleTest.java>----------------------------------------------------
import java.lang.reflect.Method;
import junit.framework.TestCase;

public class SampleTest extends TestCase {
    public SampleTest(String name) {
        super(name);
    }

    public void testSample() throws Exception {
        Sample sample = new Sample();
        Method method = sample.getClass()
	    .getDeclaredMethod("method", new Class[] {});
        method.setAccessible(true);
        assertEquals(Boolean.TRUE, method.invoke(sample, new Object[]{}));
    }
}
----------------------------------------------------------------------

              山崎 進 --- yamazaki@....jp
               東京工業大学数理計算科学専攻柴山研