大村です。
栗原さん、はじめまして。
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と呼ぶのかな。
分ってないなあ>自分