CPPUnitについて少し話そうかい
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGより賢い利用法を考えていきませんか。
0002デフォルトの名無しさん
NGNGなら初心者のポケミスとして酌量の余地もあったが・・・。
0003デフォルトの名無しさん
NGNGリンクぐらい張れよ。あと折角だから JUnit とか、C++ 以外のユニット
テストフレームワークも含めん?
CppUnit
http://cppunit.sourceforge.net/
CppUnit-x: Testing Framework for C++
http://member.nifty.ne.jp/glad/cpp/test/
xUnit リンク集
http://www.xprogramming.com/software.htm
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGリフレクションってなに?
0008デフォルトの名無しさん
NGNGユニットテストとリファクタリングは XP 以外にも有用なアクティビティだよ。
0009デフォルトの名無しさん
NGNG解説してる本とかWEBサイトとかが
ないから使えないんだよね。
SEな人たちは、そこの研修で教えてもらってるから
いいよね。
0010デフォルトの名無しさん
NGNGいくらでもあると思うが。
http://www.google.co.jp/search?q=junit&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0011デフォルトの名無しさん
NGNGXPテスト技法とかみてもちょっとしか載ってないし、英語サイトは難しいしで。
0012デフォルトの名無しさん
NGNGぐぐってみた?
0013デフォルトの名無しさん
NGNGぐぐったけど、ちょっとしかでなかった。
そこもさわりぐらいしか書いてないし。
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGそれが争点になればねぇ・・
ドキュソを証明するのは簡単なんだけど、それを判断する香具師がオールドタイプだから・・
0016デフォルトの名無しさん
NGNGたとえば、1スレをIEとかのブラウザで表示するのに
何秒かかりますかー(スレの大きさによるけど)
それの 10,000倍くらいかかるかと。
あと倉庫の一覧表とかも全部書き換えるし
html化と同時に datのzip化 および出来た htmlの
zip化も同時に行われますー
さてさて どれくらいかかるのやら。。。
0017デフォルトの名無しさん
NGNGべつにリフレクションとかなくたって、テストメソッドを集めて
addTest するようなコードをはきだすスクリプトを書けばよいだけの話。
それより、子河童ってなによ?誰か説明きぼん。
0018ななし
NGNG0019デフォルトの名無しさん
NGNG>>17
http://sourceforge.jp/projects/cuppa/
CppUnit 用のコードの雛型を生成してくれる。
0020デフォルトの名無しさん
NGNG入力データで処理がいくつかに分かれる場合はテストも複雑になって正確なテストができるとは思えんのだが。
0021デフォルトの名無しさん
NGNG基本は、C++処理系が用意している assert よりもエレガントな処理を
してくれる assert を提供してくれるってことだよね。
assert の中は何を書いてもよいわけで、別に変数の値チェックに限られる
わけではない。
たとえば、処理の途中経過をテキストダンプして、あらかじめ作成しておいた
正しいダンプ結果との差分をチェックしてもよい。
assert( system( "diff …" ) == 0 ) ってな感じで。
0022デフォルトの名無しさん
NGNG002320
NGNGなるほど。
でもデータによって無限にパターンがある場合ってどうしてますか?
DBからデータを取ってきてそれによって処理が代わったりする場合とか。
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGtypeid演算子とかtype_infoクラスでは役不足?
0026デフォルトの名無しさん
NGNG最低限クラス内のtestXXX()メソッド列挙する機能が必要。
0027デフォルトの名無しさん
NGNGそれって適当なスクリプト書いてそういうファイルを自動生成するようにすれば
いいだけじゃないの?
0028デフォルトの名無しさん
NGNGついでに、プログラムの方も「入力を拾ってくる」ところと「入力を
処理する」ところを分離しておくのが吉だよな。
逆に言うと、そういう粒度の細かい設計にしてないと、単体テストは
有効に使えない。
0029デフォルトの名無しさん
NGNGMVCのVとC?
0030デフォルトの名無しさん
NGNGいちいちフィルタかますの遅いし面倒だしテンポ悪いし。
それにクラス参照ないのも×
0031デフォルトの名無しさん
NGNG遅いならCで書きゃ問題ないだろ。普通のコンパイル時間に比べれば微々たるもんだ。
っていっても別に使いたくない人に無理やり使わす気はないけど。
ただ単体テストで他に良い方法がないのが事実だから。
0032デフォルトの名無しさん
NGNG別に使い物にならないとはいってないよ。
ただ言語仕様が腐ってるからフレームワークが
不便かつ不自然に歪んでるというだけで。
0033デフォルトの名無しさん
NGNG自動的に完全な同値分割やC1カバレージのテスト生成しても、
テストの数が多すぎて見たくもなくなる。
同値分割は意識しないといけないけど、
そのメソッドの仕様として必要である(と思った)分だけのテストを作る。
ユニットテストが不必要に複雑になるときにはメソッドを分割するなど設計を変更すべき。
0034デフォルトの名無しさん
NGNG> 不便かつ不自然に歪んでるというだけで。
リフレクションといっても、UnitTest で使ってるのはせいぜいテスト用
メソッドの一覧作成ぐらいだろ? (CppUnit-x だと suite() メソッド
を手で書くか、自動生成するかの違い)
その程度、Perl あたりでスクリプト書けばすぐに解決だと思うが。っつ
か、俺は Perl + Makefile でよろしくやってます。
0035山崎渉
NGNG0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG0038山崎渉
NGNG0039デフォルトの名無しさん
NGNG別にいーじゃん。一番需要が多い言語だし。
0040デフォルトの名無しさん
NGNG需要が多いってどういう意味だい?
C++ で仕事してる人間は(VBやCOBOLやJavaに比べれば)すごく少ないはずだが?
0041デフォルトの名無しさん
NGNGソースぷりーず。
いや否定してるワケじゃなくて、プログラミング言語別のプログラマ人口って
どんなもんかと思ってさ。
0042デフォルトの名無しさん
NGNG使ってるかはともかく教養として知ってないと何かと大変だと思うけどね。
0043山崎渉
NGNG0044デフォルトの名無しさん
NGNGVBは開発補助用のツール作り。
Javaも限りなく少ない。
0045デフォルトの名無しさん
NGNG世間知らずなCOBOLerの憂鬱。 完
004640
NGNGゴメン、ソースどこか忘れちゃった。
なんか COBOLer + VBer で全世界のプログラマの 50% 以上だとかなんとかって
結果だったと思う。
誰か該当ソースぷりーず(--;
0047デフォルトの名無しさん
NGNGが、サーバサイドJavaやらASPやらの受注が多いのも事実で
そういった仕事が多い=VB&Java使いが多い
という認識をしている人が*日本では*大半じゃないかと。
0048デフォルトの名無しさん
NGNGコボルが書ける人=コボルしか書けない人
ではないと思うんだがどうか。
004947
NGNGVB&Java使い=VB&Java*しか*書けない人
とは言ってないけどな。
主にその言語を仕事として使っている(or 使わねばならない)人って意味だろ?
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGC++使ってなくて、さらにCPPUnit使う気ないヤツはスレから出てってくれよ
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG実際にCppUnit使って開発はしてるが、ここで喋るネタなんてないしな。
0054デフォルトの名無しさん
NGNGVB型の参照がどうしたんだ?」とか一瞬思ってしまったが、よく考えると
あながち間違いでもないのか?
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGJUnitはeclipseからウィザード起動するだけでいいのに。
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGhttp://www.rapid-programming.com/vbaunit/vbaunit.zip
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG何言ってんだ、お前
0062デフォルトの名無しさん
NGNGってどうなの?
0063デフォルトの名無しさん
NGNG何で素直にCompositeにしないの?
0064デフォルトの名無しさん
NGNG{
// ものすごく、たくさんのオブジェクトを生成。インクルードしたファイルや、
// 実行時に読み込まれるファイルの内容に依存。
}
Foo::doSomething()
{
// なにやら処理
}
↑こんなソースがあって、doSomething() メソッドを単体テストしたいんです。
# Foo クラス自体を書き直すのがベストなんですけどね。
単純なコンストラクタを持つ Foo のサブクラス FooSub を作り、
ダミーのオブジェクトを持たせておいて、
FooSub.doSomething() をテストするっていうのは、いけないことですか?
0065山崎渉
NGNG0066山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0067山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0068デフォルトの名無しさん
NGNGそれがなにか?
0069山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0070デフォルトの名無しさん
NGNGはぅ
0071山崎 渉
NGNG0072山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG◎満足しました!!(^0^)最高です!!◎
0075あぼーん
NGNG0076デフォルトの名無しさん
NGNGcppunit-x は普通に使えてる > .NET 2003
激しくどうでも良いことだと思うが
ある名前空間にあるクラスのテストクラスって
あるクラスと同じ名前空間に入れる?
それとも別空間でusingするなりなんなりする?
もったいないので保守age(=゚ω゚)ノ
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGすごい寂れっぷりだ・・・
やっぱCPPUnitは無理なのか?
河童がもう少しがんばってくれないかな・・・
0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNG俺はRedHatでちゃんと動いてるし。
0081デフォルトの名無しさん
NGNGchar* p = 0;
*p = 10;
とかやってみそ。落ちるから。
0082デフォルトの名無しさん
NGNGCPPUnitに対する疑問点。
1.そもそも楽するためにあるのになんでCUIなんだろ?
(CUIは前時代的。他人を説得するのに説得力激減。)
2.テストしたいクラスから自動的にテストクラス作るくらいやってくれたらいいのに。
(スクリプト書けばいいとか言うのは問題外。面倒。)
ついでに河童について
3.GUIやるのになんでFOX?
(外観に違和感ありすぎ。
マルチプラットフォームの時点で使用者のことはかんがえてないと思う。)
4.部品が多すぎてどうすればいいのかよくわからない。
(小河童やら子馬やら、内輪で使う分にはいいんだろうけど・・・なんかキモイ)
0083デフォルトの名無しさん
NGNGCUIの方が自動化しやすく人為的ミスが起きにくい
2.
なにをテストしたいのかどうやって決めるの?
3.
シングルプラットフォームの方が使用者の事を考えてないと思うが
4.
そんくらい自分で調べろ
(2行目は激しく同意)
0084デフォルトの名無しさん
NGNG>>83
1.予想通りの反応だ。自動化については同意。
ただ、JUnitと比べてどうよ?CUI「も」用意すべきだったと思う。
2.ごめん、言葉が足りなかった。欲しいのはテストクラスのテンプレ作成だね。
3.みてくれなんてどうでもいいならそうだね。
ただWindowsアプリの中であれはどうだろう?
使いやすい、にくいじゃなくて単純に気分の問題かな?
マルチプラットフォームの敗因は見てくれの違和感じゃないかなと思うわけよ。
Swingとか遅いわ、キモイわ、そらクライアントつかわねーよって感じだし。
4.漏れは調べたよ。ただ、万人がそうするかっていうと・・・
部品がばらばらってある時点でやる気をなくす香具師も多いだろう。
それとも分かるやつだけ使えってスタンスかな?
0085デフォルトの名無しさん
NGNGつーかあんた全然自分で調べてないじゃん。
0086Error401
NGNG2. そもそもxUnitはテストファースト(最近はTDDっていうのかな)で使うものだからその使い方は間違い。
仮に後付けのテストを書こうするなら、簡単なスクリプトでも書けばいいじゃん。
河童は使ってないのでパス。
008782
NGNG何が?
もしCPPUnitにテンプレ作成機能がついてるなら漏れの調査不足、すんまそん。
子河童とかのことを言ってるなら、後付ツールじゃなくてCPPUnitになんで付いてないのかってこと。
こういうのがあるってことは欲しい人も多いはず。なんでないかなあと疑問に思うわけよ。
>>86
1.自動化するからGUIいらないのは理解できる。
ただ雑誌とかで紹介されたときにインパクトが減らないかい?
2.あれ?漏れの勘違いか?こういう流れだと思ってたんだが。
クラス定義作成→テストクラス定義作成→テストメソッド実装→クラス実装
↑ ↑
↑ この時点でテスト開始可能
欲しいのはこの機能
0088Error401
NGNG> ただ雑誌とかで紹介されたときにインパクトが減らないかい?
cppunitの利用者にとっては関係の無い話なのでパス。
> 2.あれ?漏れの勘違いか?こういう流れだと思ってたんだが。
> クラス定義作成→テストクラス定義作成→テストメソッド実装→クラス実装
原理主義的に言えば、存在しないクラスに対するテストコードを書いて、
コンパイルが失敗するところからテストが始まります。
とはいえ、最小限のクラス定義をしてから、テストコードを書くという手順に
してもいいと思うんですが、その場合のテストクラス定義はそれこそ
簡単なスクリプトを書けばよいと思うんですが。あるいは、最低限の
テンプレートファイルを作っておくとか。
008982
NGNG> cppunitの利用者にとっては関係の無い話なのでパス。
> 簡単なスクリプトを書けばよいと思うんですが。
やっぱり行き着くところはそこですか・・・
eclipse + JUnit をみてるとねえ・・・
こういうのが提供されないってことはC++の時代は終わりなのかな・・・
0090デフォルトの名無しさん
NGNG009282
NGNGいや違うって。「欲しい」=「作ろう、作って」じゃないって。
ただ単に漏れはスレタイ通りに語ってるだけ。
CPPUnitをどうこうしようって気はさらさらないYO!
>>91
こことかを参考にどうぞ。
http://www.atmarkit.co.jp/fjava/devs/xpd05/xpd05.html
0093Error401
NGNGなるほど。情報サンクス。
こういうのが欲しければ、VCのプラグインを書く必要があるのかな?
私の場合は必要なものはすべてrubyで書いているので、あまり
欲しいとは思いませんでした :-P
0094デフォルトの名無しさん
NGNG> 2.テストしたいクラスから自動的にテストクラス作るくらいやってくれたらいいのに。
> (スクリプト書けばいいとか言うのは問題外。面倒。)
Visual Studioでよければ、TestClass作成マクロが同封されているわけだが。
もっとも、「テストしたいクラスから自動的」ではないけどな。
そのへんはコピペしる。
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNGリフレクションの間違えでは?
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG標準出力とかの、外部に対して作用する処理のテストはできないですか?
書き出したファイルの書式が合ってるかどうかとか。
0100デフォルトの名無しさん
NGNGdiffをして結果を返すツールでも作って渡せばいいんとちゃう?
0101デフォルトの名無しさん
NGNG主導者になっているのでしょうか?
活動自体はすごいなと感心するのですが、ネーミングから
禿しくただようヲタ臭さ(?)に、どうしても馴染めません。
一般人を排除してヲタ帝国を築くために、わざとあのような
ネーミングをしているのかと邪推したくなります。
Testとかその周辺の活動って、もっと開かれた環境だと
おもってたけど…こういっちゃなんだが、一部のヲタの
いいおもちゃにされてしまっているように感じる…残念
そんなことはなく、実際には大勢のひとたちから
支持・歓迎されているのかな
いまごろTestに関心を持った者のヒガミになってしまった
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNGそれは、
・日本の
・cppunitを使っている人で
・ベータバージョンユーザの
・さらに一部
にしかすぎないでしょ。
C++ユーザ以外は「あのロシア語の名前の人」くらいの認識じゃないの?(w
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNGCppUnitをWebで大々的に扱ってるのが
そのグループなだけであって
普通に地味に使ってる人の方が多いと思うが
俺は普通にCppUnit-x使ってるけど
CUIで十分やし
0106デフォルトの名無しさん
NGNG大々的って…
アレを日常的に使ってるユーザは100人もいないと思うが。
0107デフォルトの名無しさん
NGNG通常はcppunit-xだけ使ってる。
0108デフォルトの名無しさん
NGNG多分誰も使ってないけど。
0109デフォルトの名無しさん
NGNGCppUnitCB, 他のユニットテストフレームワークと比較して、どこが「最強」なのか
興味あるなぁ。レポートよろしく。
0110デフォルトの名無しさん
NGNG他CppUnitと違ってわざわざメソッドを一つ一つ登録したりする必要がない。
RTTIで勝手に実行時にテストメソッドを全部認識して実行してくれる。
というか、JUnitとかの他言語のテストフレームワークと比べると、テストメソッドをわざわざ一つ一つ登録したり、
それだけのために外部ツールを使ったり、スクリプトを使ったりしなければならない方が異常だと思うけど。
0111デフォルトの名無しさん
NGNGbuilder専用かよ
0112デフォルトの名無しさん
NGNGC++という言語そのものに、RTTIに類する機能が入ってないんだから、他のxUnitと違っていてあたりまえだろ。
0113デフォルトの名無しさん
NGNGC++にRTTI入ってないんですか?
ISO/IEC 14882:1998の18.5に書かれている物は一体なんなんでしょうかね?
コンパイルオプションで削除できるんだろ。
0115デフォルトの名無しさん
NGNG>メソッドを全部認識
こんな機能あったの?
0116デフォルトの名無しさん
NGNG>異常だと思うけど。
禿げしく同意!
C++は異常!
それC++ Builderだからだろ。
Delphi系の互換を逆手に取ってる。
0118デフォルトの名無しさん
NGNGDelphi>>>>>>>>>>>>>>C++
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNGこれ以外にあるの?
http://cunit.sourceforge.net/
0124Error401
NGNGC用のものもいくつかあるよ。
http://www.xprogramming.com/software.htm
一年ほど前に評価したときは、Checkが一番よさげだった。
0125Error401
NGNGhttp://check.sourceforge.net/
にあるのがCheck。
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNGCPPUnitで結合したらなんかまずい事ある?
もしくは結合テスト用のフリーのツールって無いの?(C++で)
0128デフォルトの名無しさん
NGNGPHPはそのものズバリPHPUnitってのがあったけど
Perlはいっぱいあってわからんぽ
・・・スレ違いだけどな(´・ω・`)
0129デフォルトの名無しさん
NGNGCheckってWindowsでも使えますか?
どうやってコンパイルすればいいか分かりません。
0130デフォルトの名無しさん
NGNGやろうと思えばできたりしますか?
0131デフォルトの名無しさん
NGNGコンパイラのテストじゃないならできません。
0132デフォルトの名無しさん
NGNGCppUnitは回りくどい。
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGだから河童をCppUnitとセットで語るなよ
一部の人が作った補助ツールなんやから
0137デフォルトの名無しさん
NGNG魔河童と組み合わせるとGUIだけでCppUnitが使えます。
メモリリークが発生する不具合が残っていますが、試しにリリースしてみます。
CppUnit 1.9.xに対応しています。
CppUnit TestRunner AppWizard 1.00
ファイル名:TestAppWiz100.zip
http://pub.idisk-just.com/fview/DF6GfyicJseYqiJTvkRlscdKPV6QAPskLLpJBv_lxc9Owgbf18SwFkcXzNbkUy9L
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNG駄目です。
0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNGある条件ならメソッドを実行して、条件を満たさなければ実行しない、みたいな
条件分岐テストはどうやって行えばいいのでしょう?
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGDirectXやOpenGLでUIやカメラモーションなんかのunittestってどうやって記述してるの?
あとI/Oポートの先につながっている測定器とかとのやりとりとかするクラスとか
物理的な対象物上でしか観測できない事象とかはどうやってUnitTestに取り込んでるの?
0147デフォルトの名無しさん
NGNGif ( ある条件 )
ある条件用のアサート
素直にやればよろしい。
でもできれば条件ごとに別のテストケース作るのがお勧め。
>146
リファクタリング本あたりに、
物理装置の挙動を真似るダミークラスを作るパターンが紹介されてたよ。
0148デフォルトの名無しさん
NGNG> DirectXやOpenGLでUIやカメラモーションなんかのunittestってどうやって記述してるの?
MVC っぽいクラス構成にしてれば、C の部分だけ差し替えてテストできる。
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNGI/Oデバイス操作ライブラリ等に正しく値が設定されてるとか(getterは無かったりする)そういうセットアップ情報が正しい事等のテストはどうするの?
FakeIO classとかでも良いかもしれないけど、外環境の振る舞いが持ち込まれてしまう状態とかだとテスト自体ができなかったりするものとかは無視するの?
テストユニットクラスが増えるのは良いけど、テストの為のFakeの為のテストの為のみたいにどんどんクラスが増えてしまって頭抱えてます。
0151デフォルトの名無しさん
NGNG機能はまるっきり被ってるんでしょうか?
片方にはあって、片方にないみたいな比較情報が欲しいです。
と質問しようとして、その前にとGoogleに聞いてみたところ、
ttp://lists.boost.org/MailArchives/boost-users/msg04216.php
というスレッドを発見しましたのでここにメモっておきますね。
0152デフォルトの名無しさん
NGNG> FakeIO classとかでも良いかもしれないけど、外環境の振る舞いが持ち込まれてしまう状態とかだとテスト自体ができなかったりするものとかは無視するの?
程度問題だが、完全なテストってのは無理。それこそ
double sqrt(double)
だって、完全なテストを行おうと思ったら double 全部の値に対して
テストする必要があるわけだが、そんなんやらんでしょ。
> テストユニットクラスが増えるのは良いけど、テストの為のFakeの為のテストの為のみたいにどんどんクラスが増えてしまって頭抱えてます。
もう少し具体的に書いてくれれば、何かアドバイスできるかも。
0153デフォルトの名無しさん
NGNGぶっちゃけ悪魔の証明。
0154デフォルトの名無しさん
NGNG0155144
NGNGなんでもかんでも本物のソース対しては変更を加えずに
テストできる方法がある、と思っていたのですがそうでは無い、ということですね。
サンプルなんかを見てると、テスト対象のソースに手を加えるのはテストケースの失敗を
修正するときだけのように見えるので…
0156デフォルトの名無しさん
NGNG>条件分岐テストはどうやって行えばいいのでしょう?
条件で実行するメソッドが動いたかどうか後でわかる仕組み、ログとかフラグとか、
ほんで、テストケースは
動く条件セット
アサート(動いた?)
動かない条件セット
アサート(動かなかった?)
0157デフォルトの名無しさん
NGNGそれとも、やはり修正時には.hと.cppを双方いちいち書き換えていく必要があるのでしょうか。
JUnit(+eclipse)使ったことがあると、CppUnitは手間がかかりすぎるような気がして、結構萎えますね…
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNGhttp://cxxtest.sourceforge.net/
Perl で書かれた前処理プログラムを使うことで、TestSuite の生成を自動化
しているから、こんな感じでテストが書ける。
# cat MyTetSuite.h
// MyTestSuite.h
#include <cxxtest/TestSuite.h>
class MyTestSuite : public CxxTest::TestSuite
{
public:
void testAddition( void )
{
TS_ASSERT( 1 + 1 > 1 );
TS_ASSERT_EQUALS( 1 + 1, 2 );
}
};
# cxxtestgen.pl --error-printer -o runner.cpp MyTestSuite.h
# g++ -o runner runner.cpp
# ./runner
Running 1 test.OK!
CppUnit+河童に近いアプローチなんだけど、なんとなくこっちの方が使い勝手
いいかも。GUITestRunnerのセンスも素晴らしい。
0163デフォルトの名無しさん
NGNGぬるぽ!
0164デフォルトの名無しさん
NGNG#define ASSERT(x)
だけあれば十分な気がするんだけど...
framework使う利点ってどんな事?
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG1. テスト間の結合度を相対的に低くできる。
2. 記法がある程度統一できるので、可読性の向上が期待できる
一方で、フレームワークが使えない環境ではテストできないというものではな
いと思う。あくまでフレームワークは費用対効果を改善するためのもの。
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGJUnitを見習え
0169167
NGNGC++は言語仕様的に不利だから統合開発環境の側でサポートしてもらわんとやってられんね。
とりあえず、eclipseに期待。
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNG#error
あるいは BOOST_ASSERT()
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNGCxxTestいいね。
0176デフォルトの名無しさん
NGNGWin32Guiだとなぜかウィンドウが一瞬で消える('A`)
でも便利だな。使わせてもらおう。
0177176
NGNG自己解決。テストを実行するときに-keepオプション。
0178176
NGNGperl -w d:\home\lib\cxxtest\cxxtestgen.pl --error-printer -o runner.cpp --gui=Win32Gui *.hpp
って具合にコマンド記述(ほんとはバッチファイルにすべき)
デバッグ-コマンド引数に-keepを追加。
これは便利。河童とかもうどうでもいいですよ!
0179デフォルトの名無しさん
NGNGprivateなメソッド・メンバをテストするにはどうしたら良いですか?
getメソッドもfriendも書きたくないのですが…。
0180デフォルトの名無しさん
NGNGCppUnit はよく知らないけど、
テストコードのコンパイル時に #define private public とかしちゃう方法を思いついた。
あまり良くないとは思うけど、実害は無かったりするのかな?
0181デフォルトの名無しさん
NGNGコンパイル出来無かったヨ
0182デフォルトの名無しさん
NGNG#define private public でコンパイルできなくなることがあるのか。
どんなケースか思いつかないから、よかったらエラーメッセージ教えてくれない?
該当部分のソースも見せてもらえると嬉しいな。
0183179
NGNGおぉ。なんと大胆な…。
やってみたけど、publicメソッドが無いと言われて、リンクが通りません。
テスト対象クラスに#define public privateしないとだめですね…。(それならリンクが通る)
あまりテスト対象クラスには、手を入れたくないなぁ。
代案はありませんか?
0184179
NGNG×public private
○private public
0185181
NGNG通った通った。
#define private public
#include <boost/test/unit_test.hpp>
としたのがマズかったみたい。
#include <boost/test/unit_test.hpp>
#define private public
としたらOKだったヨ
0186181
NGNGmain.obj : error LNK2001: 外部シンボル ""public: static class std::list<(以下略)" は未解決です。
(VC7.1)
てしかられた
0187デフォルトの名無しさん
NGNGエラーメッセージ略すなよ。
解決を助けてもらうつもりが無いならいいけど。
0188デフォルトの名無しさん
NGNG相手から送られてくる不正なデータとかを正しくハンドリングできるか、ってのは
どうやって実装するべき?
今はとりあえずテストケース内でスレッドを別に作ってループバックで接続したり、
テストをクライアントとサーバで別に書いて、同時に実行、とかしてんだけど、
ネットワークのI/Oの動作を真似るオブジェクトに差し替え、とかのほうがいいのかな?
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGつ[モック・オブジェクトパターン]
0191デフォルトの名無しさん
2005/05/12(木) 10:06:50eclipseのcppunit pluginを使っている人いる?
0192デフォルトの名無しさん
2005/05/12(木) 19:23:45resultや出力部分に細工して、結果を評価したり出力フォーマットを切り替えたり。
0193デフォルトの名無しさん
2005/05/16(月) 02:18:48単体試験はCUnitを使うという方針らしいのですが、static関数の試験や、
試験する関数内で呼び出した関数のリターンによる分岐の確認方法がわかりません。
呼び出す関数が別ソースならスタブにもできるのですが、同一ソースの関数だとソース
に手を入れない解決方法が思いつきません。
上からは簡単なサンプルだけ提示されていて、各自ネットなどで調べるように
とのことなのですが検索してもわからないのでどうかご教授お願いします。
0194デフォルトの名無しさん
2005/05/21(土) 01:36:37しない(static関数の呼び元を試験する) or グローバル化
>試験する関数内で呼び出した関数のリターンによる分岐の確認
似非呼び出し関数を試験ソース側に作りそれを呼ぶ
本物は呼び出さない
0195デフォルトの名無しさん
2005/05/21(土) 01:37:49試験しながら作れや
0196193
2005/05/21(土) 18:55:11説明ありがとうございます。
既存のソースがあってその機能拡張なので元のスタイルに合わせると
内部関数はすべてstaticになってしまうし、同一ソース内に試験対象
の関数が呼ぶ関数があったりして試験ソースに偽の関数定義しても
リンクエラーになってしまいます。
工程も今月中は製造、来月から単体試験ときっちり分かれていて、
試験項目を作り始めるのも来月だし今月中は試験用のスタブとかを
作って確認しながら作業を進めると間に合わなくなりそうです。
とりあえずい今月はCUnitで確認しやすい関数つくりを念頭において
作業して、単体試験工程では何とかソースをifdefでごまかしてCUnit
を使おうと思います。
0197デフォルトの名無しさん
2005/06/12(日) 13:09:58static関数のテストは、staticキーワードを#defineで無効化するか、
ソースファイル自身を別のテストコード用ソースに#includeしてしまえば出来ないことはない。
0198デフォルトの名無しさん
2005/06/17(金) 03:44:42ttp://park.ruru.ne.jp/ando/work/CUnitForAndo/html/index_ja.html
CppUnit-xをベースにしたC言語テスティングフレームワーク。
CUnitよりもシンプルでプアな環境でも使用できる
0199デフォルトの名無しさん
2005/07/21(木) 17:30:16CPPUnitの参考ページ少なすぎ。(しかも、ほとんどVC6用のみ)
みんなCPPUnit使ってないんですかね?
テスト環境を構築するまでに、1日潰れそうな気配。
0200デフォルトの名無しさん
2005/07/21(木) 20:58:42つ boost::test
0201デフォルトの名無しさん
2005/07/21(木) 22:03:361日掛けて、なんとかテスト環境ができたので、
このまま行きます。
元々、Java+JUnit+Eclipseを使ってるので、正直不便ですね。
0202デフォルトの名無しさん
2005/07/22(金) 00:34:490203デフォルトの名無しさん
2005/07/22(金) 01:31:38とtestdriven.net
これ最強
0204デフォルトの名無しさん
2005/07/25(月) 19:57:41本や雑誌のページ埋めるだけの都市伝説なんじゃねーの?
0205デフォルトの名無しさん
2005/07/25(月) 23:10:38# まともな上司探せ!
0206デフォルトの名無しさん
2005/07/26(火) 03:22:14EclipseにCPPUnit pluginってあるんですか?
CDTのことですか?
EclipseでJUnit並みのことが出来るCPPUnit or CUnitプラグインって
なんか無いですか?
0207デフォルトの名無しさん
2005/08/01(月) 21:26:140208デフォルトの名無しさん
2005/11/15(火) 19:48:030209デフォルトの名無しさん
2006/01/08(日) 09:50:180210デフォルトの名無しさん
2006/01/08(日) 12:17:410211デフォルトの名無しさん
2006/01/08(日) 15:35:400212デフォルトの名無しさん
2006/01/08(日) 20:06:10コンソールアプリはないは さりとてstrstreamとかもないは どうしたもんかと
0213デフォルトの名無しさん
2006/03/14(火) 11:50:320214http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 20:37:38もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0215デフォルトの名無しさん
2006/03/26(日) 16:28:35本当にありがとうございました。
0216デフォルトの名無しさん
2006/03/26(日) 19:15:280217215
2006/03/26(日) 20:25:49鬱だ
0218デフォルトの名無しさん
2006/04/08(土) 23:26:55http://www.atmarkit.co.jp/fdotnet/special/tdd/tdd_01.html
0219デフォルトの名無しさん
2006/04/21(金) 01:45:480220デフォルトの名無しさん
2006/04/22(土) 01:39:01公開関数単体でおこなうべきか、公開関数を組み合わせた形で
おこなうべきか、もしくはその両方かでおこなうべきか。
またテストコードやスタブが間違っていたら意味ないですよね?
これらが演繹的に正しい、間違いは誤差レベルと
いえる粒度でおこなうべきなんでしょうか?
0221デフォルトの名無しさん
2006/04/23(日) 14:04:38だな。
それより下位(内部)がものすごくテストしたいものだとしたら
・そもそもの設計を変更する
とか
・公開関数に格上げする
基本的にテストコードは単純明快であれば間違わないな
あと、テストドリブンって手法もあり
(対象がないので)動作しないテストコード
→(対象のインタフェースだけ作って)動作するが失敗するテストコード
→テストコードが成功するが、汚いコード
→テストに成功するきれいなコード
このステップで
0222デフォルトの名無しさん
2006/04/23(日) 21:44:19protectまでやるときもあるよ、Mock使うようなテストだと追跡する必要あるし。
0223デフォルトの名無しさん
2006/05/04(木) 17:41:042)CPPUnitをつかったリモートテストは可能でしょうか?
(Linux上でテスト対象プログラムを動かして結果をWindows上で表示とか。)
0224デフォルトの名無しさん
2006/05/05(金) 16:16:510225デフォルトの名無しさん
2006/09/08(金) 08:35:55Visual Studio 2005 で動かしてる人いますか?
0226デフォルトの名無しさん
2006/09/12(火) 00:55:09なら動かしたる
0227デフォルトの名無しさん
2006/10/07(土) 14:45:17http://pc8.2ch.net/test/read.cgi/tech/1042358524/
http://www.amazon.co.jp/gp/product/4798005711/
0228デフォルトの名無しさん
2006/10/07(土) 14:50:271)
純粋なCコンパイラ使っているのなら出来ないね。test caseはC++で書く必要があるし。
C/C++コンパイラなら可能でしょう。
2)
結果はファイル出力(xmlとか)できるので、webサーバと連携するような環境を作れば。
0229デフォルトの名無しさん
2006/10/07(土) 16:34:290230デフォルトの名無しさん
2006/10/10(火) 00:24:260231デフォルトの名無しさん
2006/10/16(月) 05:26:50CVS に全然動きがないんだけど、もーメンテされてないのかな...
0232デフォルトの名無しさん
2006/11/21(火) 21:55:51wikiには書いてない?
0233デフォルトの名無しさん
2007/01/07(日) 16:52:02(エラー出た時にリストウィンドウクリックするとIDEのその場所に飛ぶ奴?)
0234デフォルトの名無しさん
2007/01/08(月) 13:26:150235デフォルトの名無しさん
2007/02/18(日) 05:38:15チュートリアルを読んだだけではイマイチ本導入の仕方がわからん。
0236デフォルトの名無しさん
2007/06/15(金) 21:37:43VC.netでNUnitとTestDriven.NETを使ってる人いませんかね。
情報がなくて使い方がわからない・・・
普段はCppUnit+子河童を使ってます。
最初は面倒でしたが結構快適ですよ。
0237デフォルトの名無しさん
2007/06/15(金) 22:59:58普段はCppUnit+手構築です(スクリプトツール導入させてもらえないから)
0238デフォルトの名無しさん
2007/06/16(土) 03:27:100239デフォルトの名無しさん
2007/10/04(木) 22:08:420240デフォルトの名無しさん
2007/10/04(木) 22:42:48Expressでは無理だったキガス
0241デフォルトの名無しさん
2007/10/05(金) 22:23:28静的リンクでは普通の2005でも無理だった気がする。
競合の問題がどうのこうので。CppUnitのプロジェクトを弄れば行けそうだけど。
dllは試してない。
0242デフォルトの名無しさん
2007/10/10(水) 12:24:05class FooTest : public CPPUNIT_NS::TestFixture { //
CPPUNIT_TEST_SUITE( FooTest);
CPPUNIT_TEST( test_init );
CPPUNIT_TEST( test_clear );
CPPUNIT_TEST_SUITE_END();
protected:
public:
SandSurfaceBeatTest();
~SandSurfaceBeatTest();
void setUp();
void tearDown();
protected:
void test_init();
void test_clear();
};
こんなテストクラスがあったとして、
このテストクラスに外部から引き数か何かで値を渡したいのですが、何かやり方はないでしょうか。
なんか、これらのクラスってマクロで勝手に生成されるみたいだし、引数を持たせた関数用意してもそれらをどう明示的に呼び出せば良いか分かりません。
0243デフォルトの名無しさん
2007/10/20(土) 01:23:26srcフォルダ内のCppUnitLibraries.dswをVisualStudio 2005で開き、ビルドを行ったのですが、
エラー 1 error C3505: タイプライブラリ '{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}' を読み込めません。 z:\cppunit\src\msvc6\testrunner\MsDevCallerListCtrl.cpp 67
といったエラーが出て失敗してしまいます。
何か足りないのでしょうか。タイプライブラリというのもよく分かりません。
CppUnitのバージョンは1.12.0です。
0244デフォルトの名無しさん
2008/05/02(金) 14:06:220245デフォルトの名無しさん
2008/05/08(木) 22:29:000246デフォルトの名無しさん
2008/05/09(金) 09:46:48だがこのレベルでは使い物にならんと思った、無理ありすぎ。
0247デフォルトの名無しさん
2008/05/29(木) 00:26:310248デフォルトの名無しさん
2008/07/30(水) 22:39:050249デフォルトの名無しさん
2008/07/30(水) 23:27:510250デフォルトの名無しさん
2008/08/02(土) 09:39:400251デフォルトの名無しさん
2008/08/02(土) 10:30:30boostとかgoogleとかあるしな。
しかしこのスレ5年も続いてるのか。
0252デフォルトの名無しさん
2008/08/05(火) 20:33:340253デフォルトの名無しさん
2008/08/06(水) 00:09:340254デフォルトの名無しさん
2008/08/06(水) 00:28:380255デフォルトの名無しさん
2008/08/27(水) 15:46:570256デフォルトの名無しさん
2009/01/28(水) 23:08:020257デフォルトの名無しさん
2009/02/06(金) 21:18:260258デフォルトの名無しさん
2009/02/10(火) 05:58:09C++だとWinUnitの方が使いやすかった
C#だと2008のがよかったけど
0259デフォルトの名無しさん
2009/03/19(木) 20:22:560260デフォルトの名無しさん
2009/04/15(水) 23:21:150261デフォルトの名無しさん
2009/07/07(火) 22:32:010262デフォルトの名無しさん
2009/09/13(日) 16:54:02eclipseにコンパイラってついてるの?
使ったことなくてスマソ
0263デフォルトの名無しさん
2009/09/14(月) 23:40:430264デフォルトの名無しさん
2009/10/14(水) 21:50:580265デフォルトの名無しさん
2009/10/14(水) 22:47:450266デフォルトの名無しさん
2009/10/15(木) 12:44:590267デフォルトの名無しさん
2009/10/27(火) 20:29:450268デフォルトの名無しさん
2009/10/28(水) 16:22:240269デフォルトの名無しさん
2010/01/26(火) 09:07:070270デフォルトの名無しさん
2010/03/19(金) 01:34:09被テストプロジェクトの「構成の種類」をスタティックライブラリにしないとリンクに失敗する。
ところが被テストプロジェクトは全て単体テストでテストするわけじゃなくて、
実際にビルドしてできた実行ファイルを実行して行うテストもあるのでスタティックライブラリにできない。
テストの度に切り替えるのも面倒くさいのでどうしたもんかと思ってたら
>>197を参考にして、被テストプロジェクトのソースファイルをテストプロジェクト側でincludeすることで
なんとか解決しました
0271デフォルトの名無しさん
2010/03/19(金) 06:47:260272デフォルトの名無しさん
2010/03/19(金) 14:49:18なんだか良くわからんけど、うちではテスト対象のhoge.dllをtest.exe + cppunit_dll.dllでテストできてるよ。
もちろんソースコードのincludeなんて必要ない。
0273デフォルトの名無しさん
2010/07/31(土) 17:37:58ただでさえテスト自体が面倒なんだから、RubyのTest::Unitとか
boost::testみたいにコードだけでサクっとテストできないともたない
0274デフォルトの名無しさん
2010/09/19(日) 00:56:230275デフォルトの名無しさん
2010/12/29(水) 12:08:080276天使 ◆uL5esZLBSE
2011/07/03(日) 00:01:30.13お前たちは本当にゴミだな
0277デフォルトの名無しさん
2011/11/03(木) 16:16:56.090278デフォルトの名無しさん
2011/11/03(木) 16:20:24.70テストの中でnewすればいいだけじゃないの?
0279デフォルトの名無しさん
2011/11/03(木) 18:11:59.970280デフォルトの名無しさん
2011/11/22(火) 01:38:47.960282デフォルトの名無しさん
2012/03/21(水) 12:44:27.37■ このスレッドは過去ログ倉庫に格納されています