1 :
デフォルトの名無しさん:
テスト自動化全盛のこのご時世皆様いかがお過ごしでしょうか。
より賢い利用法を考えていきませんか。
より賢い利用法を教えてください。
なら初心者のポケミスとして酌量の余地もあったが・・・。
CPUUnitがどうかしたのか?
C++はリフレクションが無いからクソ。
XPなんか必要ない
>>6 ユニットテストとリファクタリングは XP 以外にも有用なアクティビティだよ。
9 :
デフォルトの名無しさん:03/01/12 18:50
Junitを使いたいんだけど、
解説してる本とかWEBサイトとかが
ないから使えないんだよね。
SEな人たちは、そこの研修で教えてもらってるから
いいよね。
11 :
デフォルトの名無しさん:03/01/12 20:10
CppUnitの日本語解説サイトってないですか?
XPテスト技法とかみてもちょっとしか載ってないし、英語サイトは難しいしで。
12 :
デフォルトの名無しさん:03/01/12 20:23
13 :
デフォルトの名無しさん:03/01/12 20:29
>>12 ぐぐったけど、ちょっとしかでなかった。
そこもさわりぐらいしか書いてないし。
800⊂(゚∀゚ )
>616
それが争点になればねぇ・・
ドキュソを証明するのは簡単なんだけど、それを判断する香具師がオールドタイプだから・・
あはっ
たとえば、1スレをIEとかのブラウザで表示するのに
何秒かかりますかー(スレの大きさによるけど)
それの 10,000倍くらいかかるかと。
あと倉庫の一覧表とかも全部書き換えるし
html化と同時に datのzip化 および出来た htmlの
zip化も同時に行われますー
さてさて どれくらいかかるのやら。。。
>>5 べつにリフレクションとかなくたって、テストメソッドを集めて
addTest するようなコードをはきだすスクリプトを書けばよいだけの話。
それより、子河童ってなによ?誰か説明きぼん。
削除以来だしとけ。
20 :
デフォルトの名無しさん:03/01/13 09:56
CPPUnitのテストって結局ある変数がある値になっているかどうかしか判定できないの?
入力データで処理がいくつかに分かれる場合はテストも複雑になって正確なテストができるとは思えんのだが。
>>20 基本は、C++処理系が用意している assert よりもエレガントな処理を
してくれる assert を提供してくれるってことだよね。
assert の中は何を書いてもよいわけで、別に変数の値チェックに限られる
わけではない。
たとえば、処理の途中経過をテキストダンプして、あらかじめ作成しておいた
正しいダンプ結果との差分をチェックしてもよい。
assert( system( "diff …" ) == 0 ) ってな感じで。
みなさんはGUI経由の入力値をチェックするにはどうしてますか?
>>21 なるほど。
でもデータによって無限にパターンがある場合ってどうしてますか?
DBからデータを取ってきてそれによって処理が代わったりする場合とか。
つかえねー
25 :
デフォルトの名無しさん:03/01/13 14:13
>>5 typeid演算子とかtype_infoクラスでは役不足?
はっきりいって力不足です。
最低限クラス内のtestXXX()メソッド列挙する機能が必要。
27 :
デフォルトの名無しさん:03/01/13 15:33
>>26 それって適当なスクリプト書いてそういうファイルを自動生成するようにすれば
いいだけじゃないの?
>>27 ついでに、プログラムの方も「入力を拾ってくる」ところと「入力を
処理する」ところを分離しておくのが吉だよな。
逆に言うと、そういう粒度の細かい設計にしてないと、単体テストは
有効に使えない。
>>27 いちいちフィルタかますの遅いし面倒だしテンポ悪いし。
それにクラス参照ないのも×
31 :
デフォルトの名無しさん:03/01/13 16:15
>>30 遅いならCで書きゃ問題ないだろ。普通のコンパイル時間に比べれば微々たるもんだ。
っていっても別に使いたくない人に無理やり使わす気はないけど。
ただ単体テストで他に良い方法がないのが事実だから。
>>31 別に使い物にならないとはいってないよ。
ただ言語仕様が腐ってるからフレームワークが
不便かつ不自然に歪んでるというだけで。
>>23 自動的に完全な同値分割やC1カバレージのテスト生成しても、
テストの数が多すぎて見たくもなくなる。
同値分割は意識しないといけないけど、
そのメソッドの仕様として必要である(と思った)分だけのテストを作る。
ユニットテストが不必要に複雑になるときにはメソッドを分割するなど設計を変更すべき。
>> 32
> 不便かつ不自然に歪んでるというだけで。
リフレクションといっても、UnitTest で使ってるのはせいぜいテスト用
メソッドの一覧作成ぐらいだろ? (CppUnit-x だと suite() メソッド
を手で書くか、自動生成するかの違い)
その程度、Perl あたりでスクリプト書けばすぐに解決だと思うが。っつ
か、俺は Perl + Makefile でよろしくやってます。
(^^)
人を人と思わないコイツらの死に様は悲惨だろうな
言語別にスレ立てるなよ。>1
(^^)
39 :
デフォルトの名無しさん:03/01/17 22:29
>>37 別にいーじゃん。一番需要が多い言語だし。
>>39 需要が多いってどういう意味だい?
C++ で仕事してる人間は(VBやCOBOLやJavaに比べれば)すごく少ないはずだが?
> C++ で仕事してる人間は(VBやCOBOLやJavaに比べれば)すごく少ないはずだが?
ソースぷりーず。
いや否定してるワケじゃなくて、プログラミング言語別のプログラマ人口って
どんなもんかと思ってさ。
>>41 使ってるかはともかく教養として知ってないと何かと大変だと思うけどね。
(^^)
44 :
デフォルトの名無しさん:03/01/25 18:44
VBやJavaの需要なんてほとんどないだろ。
VBは開発補助用のツール作り。
Javaも限りなく少ない。
>>41 ゴメン、ソースどこか忘れちゃった。
なんか COBOLer + VBer で全世界のプログラマの 50% 以上だとかなんとかって
結果だったと思う。
誰か該当ソースぷりーず(--;
ソースはないが世界規模ではCOBOLerは多いらしい。
が、サーバサイドJavaやらASPやらの受注が多いのも事実で
そういった仕事が多い=VB&Java使いが多い
という認識をしている人が*日本では*大半じゃないかと。
>>46-47 コボルが書ける人=コボルしか書けない人
ではないと思うんだがどうか。
俺も
VB&Java使い=VB&Java*しか*書けない人
とは言ってないけどな。
主にその言語を仕事として使っている(or 使わねばならない)人って意味だろ?
サーバサイドということになると、Javaよりperlやphpの方が多かったりしてね。
頼むからさー
C++使ってなくて、さらにCPPUnit使う気ないヤツはスレから出てってくれよ
あるから何かネタ振れ
全くだ。
実際にCppUnit使って開発はしてるが、ここで喋るネタなんてないしな。
ぼーとした頭で「VB&Java」という文字列を見て、「ああ? Javaっていう
VB型の参照がどうしたんだ?」とか一瞬思ってしまったが、よく考えると
あながち間違いでもないのか?
55 :
デフォルトの名無しさん:03/02/02 01:04
未経験者を啓蒙するような内容はありませんかねぇ
XP周りのサイトあたってみたら。
どうも使うのが面倒なんだよな。
JUnitはeclipseからウィザード起動するだけでいいのに。
58 :
デフォルトの名無しさん:03/02/19 23:37
VBAUnitをだれか一緒に作りませんか?
59 :
デフォルトの名無しさん:03/02/21 21:31
60 :
デフォルトの名無しさん:03/02/23 16:52
皆、cuppaっての使ってるのかな
61 :
デフォルトの名無しさん:03/02/23 19:21
TestingFrameworkのクラス構成って変じゃない?
何で素直にCompositeにしないの?
64 :
デフォルトの名無しさん:03/04/02 13:03
Foo::Foo()
{
// ものすごく、たくさんのオブジェクトを生成。インクルードしたファイルや、
// 実行時に読み込まれるファイルの内容に依存。
}
Foo::doSomething()
{
// なにやら処理
}
↑こんなソースがあって、doSomething() メソッドを単体テストしたいんです。
# Foo クラス自体を書き直すのがベストなんですけどね。
単純なコンストラクタを持つ Foo のサブクラス FooSub を作り、
ダミーのオブジェクトを持たせておいて、
FooSub.doSomething() をテストするっていうのは、いけないことですか?
(^^)
∧_∧
( ^^ )< ぬるぽ(^^)
∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
(^^)
(⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
73 :
デフォルトの名無しさん:03/08/17 01:18
Visual Studio.NETでコンパイル成功した人いる?
74 :
デフォルトの名無しさん:03/08/17 01:24
あぼーん
76 :
デフォルトの名無しさん:03/09/03 17:43
>73
cppunit-x は普通に使えてる > .NET 2003
激しくどうでも良いことだと思うが
ある名前空間にあるクラスのテストクラスって
あるクラスと同じ名前空間に入れる?
それとも別空間でusingするなりなんなりする?
もったいないので保守age(=゚ω゚)ノ
CPPUnitは種類が大杉てどれを使っていいかわからん。
78 :
デフォルトの名無しさん:03/10/04 00:35
保守age
すごい寂れっぷりだ・・・
やっぱCPPUnitは無理なのか?
河童がもう少しがんばってくれないかな・・・
cppunitをLinuxで使うとSIGSEGVでお亡くなりになってしまう。
やり方がマズイだけだと思われ。
俺はRedHatでちゃんと動いてるし。
>>84 char* p = 0;
*p = 10;
とかやってみそ。落ちるから。
82 :
デフォルトの名無しさん:03/10/04 15:57
さらに保守age
CPPUnitに対する疑問点。
1.そもそも楽するためにあるのになんでCUIなんだろ?
(CUIは前時代的。他人を説得するのに説得力激減。)
2.テストしたいクラスから自動的にテストクラス作るくらいやってくれたらいいのに。
(スクリプト書けばいいとか言うのは問題外。面倒。)
ついでに河童について
3.GUIやるのになんでFOX?
(外観に違和感ありすぎ。
マルチプラットフォームの時点で使用者のことはかんがえてないと思う。)
4.部品が多すぎてどうすればいいのかよくわからない。
(小河童やら子馬やら、内輪で使う分にはいいんだろうけど・・・なんかキモイ)
1.
CUIの方が自動化しやすく人為的ミスが起きにくい
2.
なにをテストしたいのかどうやって決めるの?
3.
シングルプラットフォームの方が使用者の事を考えてないと思うが
4.
そんくらい自分で調べろ
(2行目は激しく同意)
おお、もう反応が。
>>83 1.予想通りの反応だ。自動化については同意。
ただ、JUnitと比べてどうよ?CUI「も」用意すべきだったと思う。
2.ごめん、言葉が足りなかった。欲しいのはテストクラスのテンプレ作成だね。
3.みてくれなんてどうでもいいならそうだね。
ただWindowsアプリの中であれはどうだろう?
使いやすい、にくいじゃなくて単純に気分の問題かな?
マルチプラットフォームの敗因は見てくれの違和感じゃないかなと思うわけよ。
Swingとか遅いわ、キモイわ、そらクライアントつかわねーよって感じだし。
4.漏れは調べたよ。ただ、万人がそうするかっていうと・・・
部品がばらばらってある時点でやる気をなくす香具師も多いだろう。
それとも分かるやつだけ使えってスタンスかな?
>欲しいのはテストクラスのテンプレ作成だね。
つーかあんた全然自分で調べてないじゃん。
1. JUnitだってGUI使ってる奴なんてごく少数だと思う。大多数はテスト実行も自動化してるはず。
2. そもそもxUnitはテストファースト(最近はTDDっていうのかな)で使うものだからその使い方は間違い。
仮に後付けのテストを書こうするなら、簡単なスクリプトでも書けばいいじゃん。
河童は使ってないのでパス。
>>85 何が?
もしCPPUnitにテンプレ作成機能がついてるなら漏れの調査不足、すんまそん。
子河童とかのことを言ってるなら、後付ツールじゃなくてCPPUnitになんで付いてないのかってこと。
こういうのがあるってことは欲しい人も多いはず。なんでないかなあと疑問に思うわけよ。
>>86 1.自動化するからGUIいらないのは理解できる。
ただ雑誌とかで紹介されたときにインパクトが減らないかい?
2.あれ?漏れの勘違いか?こういう流れだと思ってたんだが。
クラス定義作成→テストクラス定義作成→テストメソッド実装→クラス実装
↑ ↑
↑ この時点でテスト開始可能
欲しいのはこの機能
>>87 > ただ雑誌とかで紹介されたときにインパクトが減らないかい?
cppunitの利用者にとっては関係の無い話なのでパス。
> 2.あれ?漏れの勘違いか?こういう流れだと思ってたんだが。
> クラス定義作成→テストクラス定義作成→テストメソッド実装→クラス実装
原理主義的に言えば、存在しないクラスに対するテストコードを書いて、
コンパイルが失敗するところからテストが始まります。
とはいえ、最小限のクラス定義をしてから、テストコードを書くという手順に
してもいいと思うんですが、その場合のテストクラス定義はそれこそ
簡単なスクリプトを書けばよいと思うんですが。あるいは、最低限の
テンプレートファイルを作っておくとか。
>88
> cppunitの利用者にとっては関係の無い話なのでパス。
> 簡単なスクリプトを書けばよいと思うんですが。
やっぱり行き着くところはそこですか・・・
eclipse + JUnit をみてるとねえ・・・
こういうのが提供されないってことはC++の時代は終わりなのかな・・・
そんなに欲しいなら自作してsourceforgeあたりで公開すれ。C++使いだろ?
>>89 参考までに、そのeclipse+JUnitでどういうことができているのか、簡単に
教えていただけませんか?
>>92 なるほど。情報サンクス。
こういうのが欲しければ、VCのプラグインを書く必要があるのかな?
私の場合は必要なものはすべてrubyで書いているので、あまり
欲しいとは思いませんでした :-P
> 82
> 2.テストしたいクラスから自動的にテストクラス作るくらいやってくれたらいいのに。
> (スクリプト書けばいいとか言うのは問題外。面倒。)
Visual Studioでよければ、TestClass作成マクロが同封されているわけだが。
もっとも、「テストしたいクラスから自動的」ではないけどな。
そのへんはコピペしる。
リファクタリング機能が言語側にないC++では、(TestCaseを作るのは)難しい。
リファクタリング機能が言語にあるって何?
実行時に動的に情報を取得するわけではないから、リフレクションの有無は関係ないよ。
99 :
デフォルトの名無しさん:03/10/15 17:48
cppunitの質問なんですけど、
標準出力とかの、外部に対して作用する処理のテストはできないですか?
書き出したファイルの書式が合ってるかどうかとか。
>>99 diffをして結果を返すツールでも作って渡せばいいんとちゃう?
UnitTestって例の河童とか子馬の人たちが
主導者になっているのでしょうか?
活動自体はすごいなと感心するのですが、ネーミングから
禿しくただようヲタ臭さ(?)に、どうしても馴染めません。
一般人を排除してヲタ帝国を築くために、わざとあのような
ネーミングをしているのかと邪推したくなります。
Testとかその周辺の活動って、もっと開かれた環境だと
おもってたけど…こういっちゃなんだが、一部のヲタの
いいおもちゃにされてしまっているように感じる…残念
そんなことはなく、実際には大勢のひとたちから
支持・歓迎されているのかな
いまごろTestに関心を持った者のヒガミになってしまった
単体でCppUnit使ったら?
>>101 それは、
・日本の
・cppunitを使っている人で
・ベータバージョンユーザの
・さらに一部
にしかすぎないでしょ。
C++ユーザ以外は「あのロシア語の名前の人」くらいの認識じゃないの?(w
あのロシア語の名前の人は本書くと大したこと無いのはなんで?
>>101 CppUnitをWebで大々的に扱ってるのが
そのグループなだけであって
普通に地味に使ってる人の方が多いと思うが
俺は普通にCppUnit-x使ってるけど
CUIで十分やし
>>105 大々的って…
アレを日常的に使ってるユーザは100人もいないと思うが。
一度試した限りだと、河童とか子馬とかしっくり来なかった。
通常はcppunit-xだけ使ってる。
CppUnitCB最強。
多分誰も使ってないけど。
>>108 CppUnitCB, 他のユニットテストフレームワークと比較して、どこが「最強」なのか
興味あるなぁ。レポートよろしく。
>>109 他CppUnitと違ってわざわざメソッドを一つ一つ登録したりする必要がない。
RTTIで勝手に実行時にテストメソッドを全部認識して実行してくれる。
というか、JUnitとかの他言語のテストフレームワークと比べると、テストメソッドをわざわざ一つ一つ登録したり、
それだけのために外部ツールを使ったり、スクリプトを使ったりしなければならない方が異常だと思うけど。
>>110 C++という言語そのものに、RTTIに類する機能が入ってないんだから、他のxUnitと違っていてあたりまえだろ。
113 :
デフォルトの名無しさん:03/10/27 17:56
>>112 C++にRTTI入ってないんですか?
ISO/IEC 14882:1998の18.5に書かれている物は一体なんなんでしょうかね?
つーか、C++のRTTIに
>メソッドを全部認識
こんな機能あったの?
116 :
デフォルトの名無しさん:03/10/27 18:32
>>110 >異常だと思うけど。
禿げしく同意!
C++は異常!
>>115 それC++ Builderだからだろ。
Delphi系の互換を逆手に取ってる。
つまり、
Delphi>>>>>>>>>>>>>>C++
>>117 なるほど、C++のRTTIではないのですね。サンクス
BCB>>>>>>>>>>Delphi>>>>C++
121 :
デフォルトの名無しさん:03/10/27 22:55
CppUnit 1.9.11のTestCaseDecoratorってどうやって使うんでしょう?
C用のってどれがいいの?
なんかcygwinに入ったな。
127 :
デフォルトの名無しさん:03/10/29 10:56
CPPUnitって単体テスト専用なの?
CPPUnitで結合したらなんかまずい事ある?
もしくは結合テスト用のフリーのツールって無いの?(C++で)
PerlやPHPのxUnitの定番ってなんでつか?
PHPはそのものズバリPHPUnitってのがあったけど
Perlはいっぱいあってわからんぽ
・・・スレ違いだけどな(´・ω・`)
>>120 CheckってWindowsでも使えますか?
どうやってコンパイルすればいいか分かりません。
130 :
デフォルトの名無しさん:03/11/05 00:44
「こんな風に書くとコンパイルエラーになる」っていうテストは、
やろうと思えばできたりしますか?
>>130 コンパイラのテストじゃないならできません。
結局スクリプトで書いた方が制限少ないし早いな。
CppUnitは回りくどい。
開発言語と同じ言語でテスト書くのが、いいんじゃなかったの?
河童とか貧弱すぎて使い物にならない
使わなきゃイイじゃん
>>134 だから河童をCppUnitとセットで語るなよ
一部の人が作った補助ツールなんやから
137 :
デフォルトの名無しさん:03/11/16 14:44
こんなくだらないもの作るくらいなら、cppunitそのものを拡張してくれよ。
無駄に分家されるのも嫌だな。
boost::testとcppunitの関係押せー手
NUnitの話をここでしても良い?
143 :
デフォルトの名無しさん:04/05/21 09:36
144 :
デフォルトの名無しさん:04/07/21 00:16
ウェブのサンプル等では、よくテスト後の値のassertEqualsなんかでテストを行っていますが、
ある条件ならメソッドを実行して、条件を満たさなければ実行しない、みたいな
条件分岐テストはどうやって行えばいいのでしょう?
145 :
デフォルトの名無しさん:04/07/21 00:41
cygwin package age
146 :
デフォルトの名無しさん:04/07/21 23:37
皆に訊きたいんだが。
DirectXやOpenGLでUIやカメラモーションなんかのunittestってどうやって記述してるの?
あとI/Oポートの先につながっている測定器とかとのやりとりとかするクラスとか
物理的な対象物上でしか観測できない事象とかはどうやってUnitTestに取り込んでるの?
147 :
デフォルトの名無しさん:04/07/22 00:00
>144
if ( ある条件 )
ある条件用のアサート
素直にやればよろしい。
でもできれば条件ごとに別のテストケース作るのがお勧め。
>146
リファクタリング本あたりに、
物理装置の挙動を真似るダミークラスを作るパターンが紹介されてたよ。
>>146 > DirectXやOpenGLでUIやカメラモーションなんかのunittestってどうやって記述してるの?
MVC っぽいクラス構成にしてれば、C の部分だけ差し替えてテストできる。
差し替えてテストってのがちょっと胡散臭いな。
>>148 I/Oデバイス操作ライブラリ等に正しく値が設定されてるとか(getterは無かったりする)そういうセットアップ情報が正しい事等のテストはどうするの?
FakeIO classとかでも良いかもしれないけど、外環境の振る舞いが持ち込まれてしまう状態とかだとテスト自体ができなかったりするものとかは無視するの?
テストユニットクラスが増えるのは良いけど、テストの為のFakeの為のテストの為のみたいにどんどんクラスが増えてしまって頭抱えてます。
>>150 > FakeIO classとかでも良いかもしれないけど、外環境の振る舞いが持ち込まれてしまう状態とかだとテスト自体ができなかったりするものとかは無視するの?
程度問題だが、完全なテストってのは無理。それこそ
double sqrt(double)
だって、完全なテストを行おうと思ったら double 全部の値に対して
テストする必要があるわけだが、そんなんやらんでしょ。
> テストユニットクラスが増えるのは良いけど、テストの為のFakeの為のテストの為のみたいにどんどんクラスが増えてしまって頭抱えてます。
もう少し具体的に書いてくれれば、何かアドバイスできるかも。
どだいバグがないことを完全に証明するのは無理ってことでしょうね。
ぶっちゃけ悪魔の証明。
std::basic_stringは?
>>147 なんでもかんでも本物のソース対しては変更を加えずに
テストできる方法がある、と思っていたのですがそうでは無い、ということですね。
サンプルなんかを見てると、テスト対象のソースに手を加えるのはテストケースの失敗を
修正するときだけのように見えるので…
>ある条件ならメソッドを実行して、条件を満たさなければ実行しない、みたいな
>条件分岐テストはどうやって行えばいいのでしょう?
条件で実行するメソッドが動いたかどうか後でわかる仕組み、ログとかフラグとか、
ほんで、テストケースは
動く条件セット
アサート(動いた?)
動かない条件セット
アサート(動かなかった?)
157 :
デフォルトの名無しさん:04/07/25 20:34
C++でTDDをやる場合、実装のコードはヘッダファイルに書くものなんでしょうか。
それとも、やはり修正時には.hと.cppを双方いちいち書き換えていく必要があるのでしょうか。
JUnit(+eclipse)使ったことがあると、CppUnitは手間がかかりすぎるような気がして、結構萎えますね…
CppUnitが手間がかかるのではなく、C++自体が手間がかかる。
C++でTDDはやめといたほうが良い、ということ?
TDDってなんですか?
テストドリヴンデヴェロップメント
162 :
デフォルトの名無しさん:04/08/01 03:48
CxxTest って使ったことある人いる?
http://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のセンスも素晴らしい。
163 :
デフォルトの名無しさん:04/08/04 01:23
ぬるぽ!
164 :
デフォルトの名無しさん:04/08/04 02:39
void check(bool);
#define ASSERT(x)
だけあれば十分な気がするんだけど...
framework使う利点ってどんな事?
エラー起きても止めなくて別のテストできる
>>164 1. テスト間の結合度を相対的に低くできる。
2. 記法がある程度統一できるので、可読性の向上が期待できる
一方で、フレームワークが使えない環境ではテストできないというものではな
いと思う。あくまでフレームワークは費用対効果を改善するためのもの。
visualstudio.netでcppunitがコンパイル不能ですよ
cppunitはウンコ。
JUnitを見習え
なんか成功しました。
C++は言語仕様的に不利だから統合開発環境の側でサポートしてもらわんとやってられんね。
とりあえず、eclipseに期待。
boost::testの今後に期待
171 :
デフォルトの名無しさん:04/11/04 01:19:49
コンパイラエラーになることを保証する機能ってある?
>>171 #error
あるいは BOOST_ASSERT()
fail
>>162 Win32Guiだとなぜかウィンドウが一瞬で消える('A`)
でも便利だな。使わせてもらおう。
> Win32Guiだとなぜかウィンドウが一瞬で消える('A`)
自己解決。テストを実行するときに-keepオプション。
VS.netでcxxunitを使う方法。テストプロジェクト作成→プロパティのビルドイベント-ビルド前のイベントに
perl -w d:\home\lib\cxxtest\cxxtestgen.pl --error-printer -o runner.cpp --gui=Win32Gui *.hpp
って具合にコマンド記述(ほんとはバッチファイルにすべき)
デバッグ-コマンド引数に-keepを追加。
これは便利。河童とかもうどうでもいいですよ!
179 :
デフォルトの名無しさん:05/01/05 23:24:45
今日、初めてCppUnitを試してみたのですが
privateなメソッド・メンバをテストするにはどうしたら良いですか?
getメソッドもfriendも書きたくないのですが…。
>>179 CppUnit はよく知らないけど、
テストコードのコンパイル時に #define private public とかしちゃう方法を思いついた。
あまり良くないとは思うけど、実害は無かったりするのかな?
>180
コンパイル出来無かったヨ
>>181 #define private public でコンパイルできなくなることがあるのか。
どんなケースか思いつかないから、よかったらエラーメッセージ教えてくれない?
該当部分のソースも見せてもらえると嬉しいな。
183 :
179:05/01/06 07:54:56
>>180 おぉ。なんと大胆な…。
やってみたけど、publicメソッドが無いと言われて、リンクが通りません。
テスト対象クラスに#define public privateしないとだめですね…。(それならリンクが通る)
あまりテスト対象クラスには、手を入れたくないなぁ。
代案はありませんか?
184 :
179:05/01/06 07:55:38
>>183 ×public private
○private public
>182
通った通った。
#define private public
#include <boost/test/unit_test.hpp>
としたのがマズかったみたい。
#include <boost/test/unit_test.hpp>
#define private public
としたらOKだったヨ
……と思ったけど、やっぱダメだった。
main.obj : error LNK2001: 外部シンボル ""public: static class std::list<(以下略)" は未解決です。
(VC7.1)
てしかられた
>>186 エラーメッセージ略すなよ。
解決を助けてもらうつもりが無いならいいけど。
ネットワーク関連の開発してるんだけど、
相手から送られてくる不正なデータとかを正しくハンドリングできるか、ってのは
どうやって実装するべき?
今はとりあえずテストケース内でスレッドを別に作ってループバックで接続したり、
テストをクライアントとサーバで別に書いて、同時に実行、とかしてんだけど、
ネットワークのI/Oの動作を真似るオブジェクトに差し替え、とかのほうがいいのかな?
CPPUNITのテスト結果をいわゆる「テスト結果報告書」として出力するいい方法ない?
>188
つ[モック・オブジェクトパターン]
191 :
デフォルトの名無しさん:2005/05/12(木) 10:06:50
あげ
eclipseのcppunit pluginを使っている人いる?
>>189 resultや出力部分に細工して、結果を評価したり出力フォーマットを切り替えたり。
今月一杯製造、来月から単体試験という工程のCの作業しています。
単体試験はCUnitを使うという方針らしいのですが、static関数の試験や、
試験する関数内で呼び出した関数のリターンによる分岐の確認方法がわかりません。
呼び出す関数が別ソースならスタブにもできるのですが、同一ソースの関数だとソース
に手を入れない解決方法が思いつきません。
上からは簡単なサンプルだけ提示されていて、各自ネットなどで調べるように
とのことなのですが検索してもわからないのでどうかご教授お願いします。
>static関数の試験
しない(static関数の呼び元を試験する) or グローバル化
>試験する関数内で呼び出した関数のリターンによる分岐の確認
似非呼び出し関数を試験ソース側に作りそれを呼ぶ
本物は呼び出さない
っつーか作り方間違ってる希ガス
試験しながら作れや
196 :
193:2005/05/21(土) 18:55:11
>>194-195 説明ありがとうございます。
既存のソースがあってその機能拡張なので元のスタイルに合わせると
内部関数はすべてstaticになってしまうし、同一ソース内に試験対象
の関数が呼ぶ関数があったりして試験ソースに偽の関数定義しても
リンクエラーになってしまいます。
工程も今月中は製造、来月から単体試験ときっちり分かれていて、
試験項目を作り始めるのも来月だし今月中は試験用のスタブとかを
作って確認しながら作業を進めると間に合わなくなりそうです。
とりあえずい今月はCUnitで確認しやすい関数つくりを念頭において
作業して、単体試験工程では何とかソースをifdefでごまかしてCUnit
を使おうと思います。
まー、テストファーストを無視している時点でアレだが。
static関数のテストは、staticキーワードを#defineで無効化するか、
ソースファイル自身を別のテストコード用ソースに#includeしてしまえば出来ないことはない。
199 :
デフォルトの名無しさん:2005/07/21(木) 17:30:16
VC.netでテスト環境を構築しようとしているのですが、
CPPUnitの参考ページ少なすぎ。(しかも、ほとんどVC6用のみ)
みんなCPPUnit使ってないんですかね?
テスト環境を構築するまでに、1日潰れそうな気配。
>>200 1日掛けて、なんとかテスト環境ができたので、
このまま行きます。
元々、Java+JUnit+Eclipseを使ってるので、正直不便ですね。
VC6でのCPPUnit環境も結構面倒でつらいぞ。
NUnit
とtestdriven.net
これ最強
テストなんて実はみんなやってない気がしてきた。
本や雑誌のページ埋めるだけの都市伝説なんじゃねーの?
失礼な、やっとるわ。
# まともな上司探せ!
206 :
デフォルトの名無しさん:2005/07/26(火) 03:22:14
>>191 EclipseにCPPUnit pluginってあるんですか?
CDTのことですか?
EclipseでJUnit並みのことが出来るCPPUnit or CUnitプラグインって
なんか無いですか?
無い
208 :
デフォルトの名無しさん:2005/11/15(火) 19:48:03
age
VC6 で CppUnit 使いたいんだけど どこかにいい解説ない?
210 :
デフォルトの名無しさん:2006/01/08(日) 12:17:41
あげ
VC6
WindowsCEでCPPUnit使いたいんだけど
コンソールアプリはないは さりとてstrstreamとかもないは どうしたもんかと
213 :
デフォルトの名無しさん:2006/03/14(火) 11:50:32
テストしろ!おまえら!!
TextSS のWindowsXP(Professional)64bit化おながいします
もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
来月からの開発で CppUnit使うから勉強しといてねと言われました。
本当にありがとうございました。
Mockつかってテストしたいのにvirtual禁止されてヒドス
217 :
215:2006/03/26(日) 20:25:49
いろいろ解説サイトを見て回ってるんだが、俺のショボい経験に照らし合わせてもどうも有用なようには思えない…
鬱だ
218 :
デフォルトの名無しさん:2006/04/08(土) 23:26:55
NUnit!
単体テストってどの粒度でおこなうべきもんなんでしょう?
公開関数単体でおこなうべきか、公開関数を組み合わせた形で
おこなうべきか、もしくはその両方かでおこなうべきか。
またテストコードやスタブが間違っていたら意味ないですよね?
これらが演繹的に正しい、間違いは誤差レベルと
いえる粒度でおこなうべきなんでしょうか?
>公開関数単体でおこなうべき
だな。
それより下位(内部)がものすごくテストしたいものだとしたら
・そもそもの設計を変更する
とか
・公開関数に格上げする
基本的にテストコードは単純明快であれば間違わないな
あと、テストドリブンって手法もあり
(対象がないので)動作しないテストコード
→(対象のインタフェースだけ作って)動作するが失敗するテストコード
→テストコードが成功するが、汚いコード
→テストに成功するきれいなコード
このステップで
>>221 protectまでやるときもあるよ、Mock使うようなテストだと追跡する必要あるし。
223 :
デフォルトの名無しさん:2006/05/04(木) 17:41:04
1)CPPUnitでC言語プログラムのテストもできるんですか?
2)CPPUnitをつかったリモートテストは可能でしょうか?
(Linux上でテスト対象プログラムを動かして結果をWindows上で表示とか。)
224 :
デフォルトの名無しさん:2006/05/05(金) 16:16:51
age
書き込みないねぇ。
Visual Studio 2005 で動かしてる人いますか?
NUnit?
なら動かしたる
>>223 1)
純粋なCコンパイラ使っているのなら出来ないね。test caseはC++で書く必要があるし。
C/C++コンパイラなら可能でしょう。
2)
結果はファイル出力(xmlとか)できるので、webサーバと連携するような環境を作れば。
このスレの廃れっぷりをみると、ユニットテストなんて必要ないことは明白だ
必要性が認知されていないことが明白だとオモ。
Visual Studio 2005 対応まだぁ?
CVS に全然動きがないんだけど、もーメンテされてないのかな...
233 :
デフォルトの名無しさん:2007/01/07(日) 16:52:02
2005対応出来てないのってTestRunnerのIDE統合のとこだよね?
(エラー出た時にリストウィンドウクリックするとIDEのその場所に飛ぶ奴?)
CppUnitのTestRunnerがメモリリークする件ってどうにもならんのかね?
235 :
デフォルトの名無しさん:2007/02/18(日) 05:38:15
CPPUNITを使用したオープンソースプロジェクトって何かある?
チュートリアルを読んだだけではイマイチ本導入の仕方がわからん。
寂しいスレですね・・・
VC.netでNUnitとTestDriven.NETを使ってる人いませんかね。
情報がなくて使い方がわからない・・・
普段はCppUnit+子河童を使ってます。
最初は面倒でしたが結構快適ですよ。
NUnitってC#用なんじゃないっけ?
普段はCppUnit+手構築です(スクリプトツール導入させてもらえないから)
わだすはboost::test使ってる
239 :
デフォルトの名無しさん:2007/10/04(木) 22:08:42
VS2005で動かせないんでしょうか?
241 :
デフォルトの名無しさん:2007/10/05(金) 22:23:28
>>239 静的リンクでは普通の2005でも無理だった気がする。
競合の問題がどうのこうので。CppUnitのプロジェクトを弄れば行けそうだけど。
dllは試してない。
質問です。
class 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();
};
こんなテストクラスがあったとして、
このテストクラスに外部から引き数か何かで値を渡したいのですが、何かやり方はないでしょうか。
なんか、これらのクラスってマクロで勝手に生成されるみたいだし、引数を持たせた関数用意してもそれらをどう明示的に呼び出せば良いか分かりません。
CppUnitのビルドに関する質問です。
srcフォルダ内のCppUnitLibraries.dswをVisualStudio 2005で開き、ビルドを行ったのですが、
エラー 1 error C3505: タイプライブラリ '{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}' を読み込めません。 z:\cppunit\src\msvc6\testrunner\MsDevCallerListCtrl.cpp 67
といったエラーが出て失敗してしまいます。
何か足りないのでしょうか。タイプライブラリというのもよく分かりません。
CppUnitのバージョンは1.12.0です。
hο∫hμ..._〆(゚▽゚*)
245 :
デフォルトの名無しさん:2008/05/08(木) 22:29:00
良スレあげ
テスト対象がC++という事を考えると良くできるているとは思った。
だがこのレベルでは使い物にならんと思った、無理ありすぎ。
VS2005でCppUnit 1.12.0で問題ない状態だったのだが、1.12.1にしたらビルドが通らない。なして…?
248 :
デフォルトの名無しさん:2008/07/30(水) 22:39:05
なんだよここ、5月から進んでねえな。
boost::testにでも移行してるんじゃねーの
テストぐらいで大げさなんだよ
さすがにCPPUnitのみってのは話題がなさそう。
boostとかgoogleとかあるしな。
しかしこのスレ5年も続いてるのか。
googleのやつが出たからもう少し盛り上がると思ったんだけどな
スレタイがね…
もわっとる
xUnitなら良かったのかな。
256 :
デフォルトの名無しさん:2009/01/28(水) 23:08:02
ageとくか。
257 :
デフォルトの名無しさん:2009/02/06(金) 21:18:26
さてと、VS2008Proに単体テスト機能が搭載されたってことでageとこう
>>257 C++だとWinUnitの方が使いやすかった
C#だと2008のがよかったけど
こやつめw
そうかなあ
261 :
デフォルトの名無しさん:2009/07/07(火) 22:32:01
cppunitをeclipseでコンパイルしたいんだけれどうまくいかない...
>>261 eclipseにコンパイラってついてるの?
使ったことなくてスマソ
263 :
デフォルトの名無しさん:2009/09/14(月) 23:40:43
は?
Eclipseってエディタじゃないの?
265 :
デフォルトの名無しさん:2009/10/14(水) 22:47:45
一通りこのスレ読んでみたが、あまりいい情報ないなぁ。
266 :
デフォルトの名無しさん:2009/10/15(木) 12:44:59
お前が出してもいいんだぜ?
267 :
デフォルトの名無しさん:2009/10/27(火) 20:29:45
CUnit for Mr.Ando 最強
268 :
デフォルトの名無しさん:2009/10/28(水) 16:22:24
UnitTest++こそ最強
保守
CPPUnitをVisual C++ 2008 Express Edition使おうとしたんですが、
被テストプロジェクトの「構成の種類」をスタティックライブラリにしないとリンクに失敗する。
ところが被テストプロジェクトは全て単体テストでテストするわけじゃなくて、
実際にビルドしてできた実行ファイルを実行して行うテストもあるのでスタティックライブラリにできない。
テストの度に切り替えるのも面倒くさいのでどうしたもんかと思ってたら
>>197を参考にして、被テストプロジェクトのソースファイルをテストプロジェクト側でincludeすることで
なんとか解決しました
テスト対象のコードをスタティックライブラリに追い出しなされ。
272 :
デフォルトの名無しさん:2010/03/19(金) 14:49:18
>>270 なんだか良くわからんけど、うちではテスト対象のhoge.dllをtest.exe + cppunit_dll.dllでテストできてるよ。
もちろんソースコードのincludeなんて必要ない。
使うの面倒なんだよなCPPUnitって
ただでさえテスト自体が面倒なんだから、RubyのTest::Unitとか
boost::testみたいにコードだけでサクっとテストできないともたない
274 :
デフォルトの名無しさん:2010/09/19(日) 00:56:23
ええ?
cppunitのオフラインマニュアルが欲しい。
お前たちは本当にゴミだな
コンストラクタのテストしたいときはどうするの、これ?
コンストラクタの何をテストしたいのか知らないけど
テストの中でnewすればいいだけじゃないの?
なる。setUpやtearDownに気を取られてた。
280 :
デフォルトの名無しさん:2011/11/22(火) 01:38:47.96
そ−なんだ
∧_∧
( ・∀・) | | ガガッ
と ) | |
Y /ノ .人
/ ) .人 < >_∧∩
_/し' < >_∧∩`Д´)/
(_フ彡 V`Д´)/ / ←
>>163 / ←
>>66
282 :
デフォルトの名無しさん:
あげ