Index: [Article Count Order] [Thread]

Date:  Mon, 10 Mar 2003 16:56:56 +0900
From:  Shibukawa Yoshiki <yoshiki@....jp>
Subject:  [XP-jp:04188] Re: 幻覚剤としてのテストファースト
To:  extremeprogramming-jp@....jp
Message-Id:  <JT20030310165656.133337078@....jp>
In-Reply-To:  <000401c2def2$cfd32b50$26230e0a@koido044664>
References:  <000401c2def2$cfd32b50$26230e0a@koido044664>
X-Mail-Count: 04188

渋川@河童プロジェクトです。

> 私は、ユニットテストは、コンパイラ延長として考えてい
> ます。

ということで、Visual C++ 6.0とCppUnit 1.8.0で、コンパイル作業と一緒にテ
ストをしてしまう方法の紹介です。どちらも最新版にしても問題ないと思います
が、検証していないので、これでご勘弁を。

F7キーでビルドして、コンパイルが通ってテストが失敗したら、F4キーで即座に
失敗したASSERTメソッドにジャンプできます。これが地味で以外に便利です。

ユニットテスト用のプロジェクトを開き、プロジェクト→設定→ビルド後の処理
の所に、テストプログラムの実行ファイル名をフルパスで書きます。相対アドレ
スだとどこが起点なのかちょっと分からなかったので、念のためフルパスで。パ
ス名ミスると変なプロセスが上がって、ビルドが終了しなくなるので、そうなっ
たらタスクマネージャで妖しいプロセスを落として下さい。Visual Studioを落
としてもダメです。

Outputterとして、CompilerOutputter、出力先をstd::cerrにします。子河童で
生成したmainなら、実行ファイル名の後ろに--compiler --errと付ければOKです
ね。コード参照。自分で書くときには以下のように。

#include <iostream>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/CompilerOutputter.h>
#include <cppunit/extensions/TestFactoryRegistry.h>

int main(int argc, char* argv[]) {
 CppUnit::TextUi::TestRunner runner;
 runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 CppUnit::Outputter* outputter = 
  new CppUnit::CompilerOutputter(&runner.result(),*stream);
 std::ostream* stream = target ? &std::cerr : &std::cout;
 runner.setOutputter(outputter);
 return runner.run() ? 0 : 1;
}

GUIのMFCテストランナーでも、CppUnit付属のプラグインをVisual Studioに入れ
ると、失敗したテストをダブルクリックしてコードジャンプができます。詳しく
はこちらをご覧下さい。

http://www.unittest.org/document/archive/cpp/cppunit/vcinstall.html
http://www.unittest.org/document/archive/cpp/cppunit/buildsetup.html

NUnitのVS.netプラグインも見つけたんですが、VS.netはまだ持っていないので、
同じぐらい便利にできるかはわかりません。

http://sourceforge.net/projects/nunitaddin/

-----

東京工業大学 電気電子工学科
_/_/_/  しぶかわよしき JA6HFA/1 yoshiki@....jp
_/    http://www.shibu.jp  http://www.unittest.org