単体テスト – プログラミング – Home

通知
すべてクリア

単体テスト


sasaki
 sasaki
(@sasaki)
ゲスト
結合: 20年前
投稿: 2
Topic starter  

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

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

一応、VC.NET2003です。


引用解決済
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> 単体テストをしたいと思って、CppUnitとかちょっと調べたんですが、
> めちゃめちゃ面倒そうですね。

それほどでもないけど…

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

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


返信引用
sasaki
 sasaki
(@sasaki)
ゲスト
結合: 20年前
投稿: 2
Topic starter  

すばやい回答ありがとうございます。

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

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

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


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

> http://www.unittest.org/
> ってどこ行っちゃたんですか?

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

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

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

cocuppa --skeleton FooTest test1 test2 test3

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


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

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

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

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


返信引用
undefined name
 undefined name
(@undefined name)
ゲスト
結合: 20年前
投稿: 2
 

D と比較されたら大抵の xUnit は面倒では?(方針が微妙に違う)


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

DbC と UnitTest とは検証する対象が異なりますしね。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

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

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

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

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


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

DのDbCであっても、pre/post-conditionとinvariantは自分で書くんだし。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました