Index: [Article Count Order] [Thread]

Date:  Tue, 5 Sep 2000 14:51:55 +0900
From:  omura@....jp
Subject:  [XP-jp:00823] Re: Member, MemberList, MemberAuthorization
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <20000905145101omura@....jp>
In-Reply-To:  Your message of "Tue, 5 Sep 2000 11:43:16 +0900"             <50158B900247D411B8120090CC01C0EC1E05A1@....jp>
References:  <50158B900247D411B8120090CC01C0EC1E05A1@....jp>
Posted:  Tue, 05 Sep 2000 14:51:01 +0900
X-Mail-Count: 00823

大村です。

栗原さん、はじめまして。

tetsuya@....jp wrote:
...
>> public void testEmptyGet() {
>>      MemberList memberList = new MemberList();
>>      try {
>>          Member member = memberList.get(0);
>>          fail( "IndexOutOfBoundsException が必要なところ" );
>>      } catch ( e) {
>>          assert( true );
>>      }
>>  }
>> 
>> のように書くとよいと、FAQかなにかに書いてありました。
>
>JUnit の FAQ にありました。「How do I implement a test case for
>a thrown exception?」という項目が。
>assert(true); は特に必要なさそうですね。

そうですね。メールを送ったあとで、FAQをみなおしたら、なかったのであれれっと思いました。
(みてから送らないとだめですね)

実はこれにはわけがあります。

以前 CppUnitを使っていたとき、パスしたtestメソッドの数でなくてパスしたassert()の数を
返すようになっていました。それで、こういう場合はここをテストしたぞという意味でassert(true);
を書いていたんですよ。今回も、そのときの習慣で、つい書いてしまいました。

もともとのCppUnitはそうなってないみたいなので、そのカウント法は自分で修正したのかも
しれません。

ちなみに、その数字は、作業報告をするとき、パスしたテスト項目数の目安として使っていました。
大きい数がでると、なんか達成感があったりして、私は好きです♪


◎
>このぐらいの初期化作業なら fixture にするまでもないかな、と思ってます。
>テスト対象となるクラスの TestCase がいっぱいできるのもちょっと、、、
>TestCase の書き方を考えなくちゃならなくなると、「楽しくテスト」ができ
>ないのではないかと思います。

そうですね。似たようなTestCaseのクラスがたくさんできるのはいやですね。

私も、今の場合だと、別メールで書いたようなやり方で構成するかといわれると、
そこまでする必要はないと思います。(あれは、ああいうやり方の例にあげただ
けなので...)

でも、fixtureは使うと思うんですよ。MemberListTestのsetUp()の中で、
memberList, firstMember, secondMemberを作って、testメソッドではそれを
使うようにすると思います。

楽しいテストってのは、プログラマーとしてテストコードを書くのが楽しいって
いう意味だと思うので、私にとっては、こういうプログラミング上の工夫(という
ほどたいしたことでもないけど)をするのは、できたコードもきれいになるし、
楽しいテストの範疇にはいってますね。


◎
おかげさまで、Junit3.2のFAQをまともに読んでいなかったことが、判明いたしました(;_;)
3.1あたりから読んでなかったのかも...ううう

いろいろ発見がありました。

ちなみに、fixtureというのは、testメソッドの間で共通のテスト対象オブジェクトのことだと思って
ましたが、"How do I organize my Test Cases?"をみていると Fixtureという言葉が TestCaseの
サブクラスの名前として使われていたりしますね。
Cookbookを見直してみたら、Test Caseの説明のところで

Write the test case method in the fixture class.

という言い方をしてますから、fixutreをfieldに持つようなクラスのことをfixture classと呼ぶのかな。
分ってないなあ>自分