単体テスト

[戻る]
sasaki 2004/11/25(木) 06:48:39
単体テストをしたいと思って、CppUnitとかちょっと調べたんですが、
めちゃめちゃ面倒そうですね。
D言語みたいに、テストするクラスにちょこっとテスト用のメソッドを書いておくと、
それをCppUnit用に変換するプリプロセッサー?みたいのってないんでしょうか?
なんかテスト用にわざわざクラス書いてたらそこでバグりそうですw

あと、できれば、D言語みたいな感じで、メソッドの事前・事後条件とか、
クラスの不変条件のテストもしてみたいんですが、なるべく簡単な方法ってないです
か?

一応、VC.NET2003です。

επιστημη 2004/11/25(木) 07:28:14
> 単体テストをしたいと思って、CppUnitとかちょっと調べたんですが、
> めちゃめちゃ面倒そうですね。

それほどでもないけど…

> あと、できれば、D言語みたいな感じで、メソッドの事前・事後条件とか、
> クラスの不変条件のテストもしてみたいんですが、なるべく簡単な方法ってないです
> か?

DigitalMars C++ で単体テスト ^^;
# タダだし

sasaki 2004/11/25(木) 08:25:06
すばやい回答ありがとうございます。

>DigitalMars C++ で単体テスト ^^;
DMC++とVCでソースが完全に互換になるなら、
別に、それでもいいんですが、、やっぱりコンパイラが2つあるのは面倒そうですね。

http://www.unittest.org/
ってどこ行っちゃたんですか?
あれ使えば、ちょっとは便利になるんですか?
ページが見つからなくていまいち、何が便利になるのかがよく分からなかったり。。
これは、επιστημηさんに聞くことなのかよく分かりませんが。

そういえば、codeprojectでおもしろい記事を見つけました。
http://www.thecodeproject.com/macro/DbC_and_Doxygen.asp
けっこう便利そうかも。

επιστημη [E-Mail] [HomePage] 2004/11/25(木) 10:03:37
> http://www.unittest.org/
> ってどこ行っちゃたんですか?

サーバーが落ちてるポ。
ごめんなさい、僕の管理下にないんです。

> あれ使えば、ちょっとは便利になるんですか?

河童のことですか? テストの雛形を吐いてくれます。

cocuppa --skeleton FooTest test1 test2 test3

とかやると、空のテスト項目 test1,test2,test3 を持った
クラス FooTest のソースを生成します。

PATIO 2004/11/25(木) 10:52:37
ちゃんとCppUnitのクラス構成とか使い方を理解すれば、
ちっとも面倒ではないですよ。
面倒だと感じるのは多分実際にやってみていないからだと思います。
ほとんどの部分は自動化されていて実際にやらなくてはならないのは、
ユーザー側に起因する部分だけです。
(この部分を自動化するが無理なのは自明の理ですね)

CppUnitの肝は同じテストを繰り返して行うときにこそ発揮されます。
リファクタリングした時の再テストや機能追加した時の既存部分の再テストなどで
ありがたさが解ると思いますよ。

後はテストファーストで組む時はCppUnitは必須になるのではないかと思います。
CppUnitも万能ではありませんし、使い道を間違えるとかえって大変なだけに
なってしまうので何でもかんでもCppUnitというのもこれまた拙いと思います。

undefined name 2004/11/25(木) 11:14:56
D と比較されたら大抵の xUnit は面倒では?(方針が微妙に違う)

επιστημη [E-Mail] [HomePage] 2004/11/25(木) 11:22:23
DbC と UnitTest とは検証する対象が異なりますしね。

PATIO 2004/11/25(木) 14:40:33
D言語の場合、言語レベルでサポートされているわけで
ある意味コンパイラの実装次第で何でもありな訳ですけれど、
通常のxUnitは外部提供のライブラリな訳でこれを同列に比べられてもなぁと。
επιστημηさんも書かれているようにDbCはまた別物ですしねぇ。

ただ、何のフレームワークもない状態で書くよりは数段便利になってますし、
私自身の感想としては、そこまで言うのは贅沢なんではないかなと感じてしまいます。
xUnitはそれ自体は良くできていると思いますし、考え方もさほど難しくないと
思うのでこれで面倒と言われたらどうしようもないよなぁと。

επιστημηさんの河童にしても最終的なテストコードは自分で書かねばならない
訳ですし、その部分は避けて通れませんからね。

少なくとも私はVC++でもっと楽なのを言われても知らないです。
もしあるなら教えてほしいです。
試してみたいです。

επιστημη [E-Mail] [HomePage] 2004/11/25(木) 16:44:47
DのDbCであっても、pre/post-conditionとinvariantは自分で書くんだし。

古いスレッドには追加発言できません。