Index: [Article Count Order] [Thread]

Date:  Thu, 26 Jul 2001 15:52:00 +0900
From:  "渋川よしき" <shibu@....jp>
Subject:  [XP-jp:02274] Re: assert で表現できないメソッドのテスト
To:  <extremeprogramming-jp@....jp>
Message-Id:  <000001c1159f$78dfa2b0$01000001@piyobook>
In-Reply-To:  <200107260556.AA00567@....jp>
X-Mail-Count: 02274

渋川@東工大です。

> >しかし、実際に使うメソッドでは、ファイルの入出力や、DBの読み書き、
> >など、assert文ではテストできない又はし難いメソッドが多く存在します。

ファイル入出力ですが、入出力先を内部メモリなどにスイッチできるようにして
おけば簡単にテストできます。情報処理の本とかによく出ているスタブです。例
えば、テスト対象のメソッドを、

Fixture.print(iostream&);

というふうにしておけば、テストの時は内部メモリに対して入出力をするスト
リームのstringstreamを使って・・・

stringstream aStream;
aFixture.print(aStream);
assert(aStream.str() ==  "ファイルの中身");

と、することで文字列の比較を使ってテストができます。画面入出力のテストも
同様に行えます。
あらかじめファイルの雛形があるのでしたら、実際に出力させ、外部コマンドの
diffを利用して、

assertEquals(0, system("diff -q test.txt output.txt"));

というのが簡単でいいかもしれません。差分も出せますし。

# Javaは詳しくないのでC++で失礼します。

-----

東京工業大学 電気電子工学科 3年
_/_/_/  しぶかわよしき    JA6HFA/1
_/      mailto: shibu@....jp / ja6hfa@....jp