5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

CPPUnitについて少し話そうかい

1 :デフォルトの名無しさん:03/01/12 17:02
テスト自動化全盛のこのご時世皆様いかがお過ごしでしょうか。
より賢い利用法を考えていきませんか。

91 :Error401:03/10/05 16:16
>>89
参考までに、そのeclipse+JUnitでどういうことができているのか、簡単に
教えていただけませんか?

92 :82:03/10/05 23:53
>>90
いや違うって。「欲しい」=「作ろう、作って」じゃないって。
ただ単に漏れはスレタイ通りに語ってるだけ。
CPPUnitをどうこうしようって気はさらさらないYO!

>>91
こことかを参考にどうぞ。
http://www.atmarkit.co.jp/fjava/devs/xpd05/xpd05.html


93 :Error401:03/10/06 01:35
>>92
なるほど。情報サンクス。
こういうのが欲しければ、VCのプラグインを書く必要があるのかな?

私の場合は必要なものはすべてrubyで書いているので、あまり
欲しいとは思いませんでした :-P

94 :デフォルトの名無しさん:03/10/06 22:37
> 82
> 2.テストしたいクラスから自動的にテストクラス作るくらいやってくれたらいいのに。
>   (スクリプト書けばいいとか言うのは問題外。面倒。)

Visual Studioでよければ、TestClass作成マクロが同封されているわけだが。
もっとも、「テストしたいクラスから自動的」ではないけどな。

そのへんはコピペしる。

95 :デフォルトの名無しさん:03/10/07 21:38
リファクタリング機能が言語側にないC++では、(TestCaseを作るのは)難しい。

96 :デフォルトの名無しさん:03/10/07 21:59
リファクタリング機能が言語にあるって何?

97 :デフォルトの名無しさん:03/10/08 01:01
>>95
リフレクションの間違えでは?

98 :デフォルトの名無しさん:03/10/08 02:24
実行時に動的に情報を取得するわけではないから、リフレクションの有無は関係ないよ。

99 :デフォルトの名無しさん:03/10/15 17:48
cppunitの質問なんですけど、
標準出力とかの、外部に対して作用する処理のテストはできないですか?
書き出したファイルの書式が合ってるかどうかとか。

100 :デフォルトの名無しさん:03/10/15 21:45
>>99
diffをして結果を返すツールでも作って渡せばいいんとちゃう?

101 :デフォルトの名無しさん:03/10/24 08:17
UnitTestって例の河童とか子馬の人たちが
主導者になっているのでしょうか?

活動自体はすごいなと感心するのですが、ネーミングから
禿しくただようヲタ臭さ(?)に、どうしても馴染めません。

一般人を排除してヲタ帝国を築くために、わざとあのような
ネーミングをしているのかと邪推したくなります。

Testとかその周辺の活動って、もっと開かれた環境だと
おもってたけど…こういっちゃなんだが、一部のヲタの
いいおもちゃにされてしまっているように感じる…残念

そんなことはなく、実際には大勢のひとたちから
支持・歓迎されているのかな

いまごろTestに関心を持った者のヒガミになってしまった

102 :デフォルトの名無しさん:03/10/24 10:48
単体でCppUnit使ったら?

103 :デフォルトの名無しさん:03/10/24 22:40
>>101
それは、
・日本の
・cppunitを使っている人で
・ベータバージョンユーザの
・さらに一部
にしかすぎないでしょ。
C++ユーザ以外は「あのロシア語の名前の人」くらいの認識じゃないの?(w


104 :デフォルトの名無しさん:03/10/24 22:47
あのロシア語の名前の人は本書くと大したこと無いのはなんで?

105 :デフォルトの名無しさん:03/10/25 03:12
>>101
CppUnitをWebで大々的に扱ってるのが
そのグループなだけであって
普通に地味に使ってる人の方が多いと思うが

俺は普通にCppUnit-x使ってるけど
CUIで十分やし

106 :デフォルトの名無しさん:03/10/25 03:42
>>105
大々的って…
アレを日常的に使ってるユーザは100人もいないと思うが。

107 :デフォルトの名無しさん:03/10/25 07:24
一度試した限りだと、河童とか子馬とかしっくり来なかった。
通常はcppunit-xだけ使ってる。


108 :デフォルトの名無しさん:03/10/25 09:08
CppUnitCB最強。
多分誰も使ってないけど。

109 :デフォルトの名無しさん:03/10/25 14:03
>>108
CppUnitCB, 他のユニットテストフレームワークと比較して、どこが「最強」なのか
興味あるなぁ。レポートよろしく。

110 :デフォルトの名無しさん:03/10/25 14:08
>>109
他CppUnitと違ってわざわざメソッドを一つ一つ登録したりする必要がない。
RTTIで勝手に実行時にテストメソッドを全部認識して実行してくれる。
というか、JUnitとかの他言語のテストフレームワークと比べると、テストメソッドをわざわざ一つ一つ登録したり、
それだけのために外部ツールを使ったり、スクリプトを使ったりしなければならない方が異常だと思うけど。

111 :デフォルトの名無しさん:03/10/27 01:40
>>108
builder専用かよ

112 :デフォルトの名無しさん:03/10/27 11:51
>>110
C++という言語そのものに、RTTIに類する機能が入ってないんだから、他のxUnitと違っていてあたりまえだろ。

113 :デフォルトの名無しさん:03/10/27 17:56
>>112
C++にRTTI入ってないんですか?
ISO/IEC 14882:1998の18.5に書かれている物は一体なんなんでしょうかね?

114 : :03/10/27 18:15
>>112-113
コンパイルオプションで削除できるんだろ。


115 :デフォルトの名無しさん:03/10/27 18:23
つーか、C++のRTTIに
>メソッドを全部認識
こんな機能あったの?

116 :デフォルトの名無しさん:03/10/27 18:32
>>110
>異常だと思うけど。
禿げしく同意!
C++は異常!

117 : :03/10/27 18:36
>>115
それC++ Builderだからだろ。
Delphi系の互換を逆手に取ってる。


118 :デフォルトの名無しさん:03/10/27 18:47
つまり、
Delphi>>>>>>>>>>>>>>C++

119 :115:03/10/27 18:56
>>117
なるほど、C++のRTTIではないのですね。サンクス

120 :デフォルトの名無しさん:03/10/27 18:59
BCB>>>>>>>>>>Delphi>>>>C++

121 :デフォルトの名無しさん:03/10/27 22:55
CppUnit 1.9.11のTestCaseDecoratorってどうやって使うんでしょう?

122 :デフォルトの名無しさん:03/10/28 22:00
C用のってどれがいいの?

123 :デフォルトの名無しさん:03/10/28 23:25
どれがって?
これ以外にあるの?
http://cunit.sourceforge.net/

124 :Error401:03/10/28 23:38
>>122,123
C用のものもいくつかあるよ。
http://www.xprogramming.com/software.htm
一年ほど前に評価したときは、Checkが一番よさげだった。


125 :Error401:03/10/28 23:40
いまsourceforgeがメンテナンス中で確認できないけど、
http://check.sourceforge.net/
にあるのがCheck。

126 :デフォルトの名無しさん:03/10/29 06:52
なんかcygwinに入ったな。

127 :デフォルトの名無しさん:03/10/29 10:56
CPPUnitって単体テスト専用なの?
CPPUnitで結合したらなんかまずい事ある?
もしくは結合テスト用のフリーのツールって無いの?(C++で)

128 :デフォルトの名無しさん:03/10/29 18:42
PerlやPHPのxUnitの定番ってなんでつか?
PHPはそのものズバリPHPUnitってのがあったけど
Perlはいっぱいあってわからんぽ

・・・スレ違いだけどな(´・ω・`)

129 :デフォルトの名無しさん:03/10/29 23:02
>>120
CheckってWindowsでも使えますか?
どうやってコンパイルすればいいか分かりません。

130 :デフォルトの名無しさん:03/11/05 00:44
「こんな風に書くとコンパイルエラーになる」っていうテストは、
やろうと思えばできたりしますか?

131 :デフォルトの名無しさん:03/11/05 00:48
>>130
コンパイラのテストじゃないならできません。

132 :デフォルトの名無しさん:03/11/06 11:21
結局スクリプトで書いた方が制限少ないし早いな。
CppUnitは回りくどい。

133 :デフォルトの名無しさん:03/11/06 15:38
開発言語と同じ言語でテスト書くのが、いいんじゃなかったの?

134 :デフォルトの名無しさん:03/11/06 21:34
河童とか貧弱すぎて使い物にならない

135 :デフォルトの名無しさん:03/11/06 23:03
使わなきゃイイじゃん

136 :デフォルトの名無しさん:03/11/07 01:50
>>134
だから河童をCppUnitとセットで語るなよ
一部の人が作った補助ツールなんやから

137 :デフォルトの名無しさん:03/11/16 14:44
VC6でCppUnitを使い安くするカスタムAppWizardを作ってみました。
魔河童と組み合わせるとGUIだけでCppUnitが使えます。

メモリリークが発生する不具合が残っていますが、試しにリリースしてみます。
CppUnit 1.9.xに対応しています。

CppUnit TestRunner AppWizard 1.00
ファイル名:TestAppWiz100.zip
http://pub.idisk-just.com/fview/DF6GfyicJseYqiJTvkRlscdKPV6QAPskLLpJBv_lxc9Owgbf18SwFkcXzNbkUy9L


138 :デフォルトの名無しさん:03/11/16 16:16
こんなくだらないもの作るくらいなら、cppunitそのものを拡張してくれよ。

139 :デフォルトの名無しさん:03/11/16 16:49
無駄に分家されるのも嫌だな。

140 :デフォルトの名無しさん:03/12/22 19:46
boost::testとcppunitの関係押せー手

141 :デフォルトの名無しさん:03/12/22 21:06
NUnitの話をここでしても良い?


142 :デフォルトの名無しさん:03/12/23 00:21
>>141
駄目です。

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
リファクタリング本あたりに、
物理装置の挙動を真似るダミークラスを作るパターンが紹介されてたよ。

148 :デフォルトの名無しさん:04/07/22 00:06
>>146
> DirectXやOpenGLでUIやカメラモーションなんかのunittestってどうやって記述してるの?
MVC っぽいクラス構成にしてれば、C の部分だけ差し替えてテストできる。

149 :デフォルトの名無しさん:04/07/22 01:03
差し替えてテストってのがちょっと胡散臭いな。

150 :デフォルトの名無しさん:04/07/22 01:27
>>148
I/Oデバイス操作ライブラリ等に正しく値が設定されてるとか(getterは無かったりする)そういうセットアップ情報が正しい事等のテストはどうするの?
FakeIO classとかでも良いかもしれないけど、外環境の振る舞いが持ち込まれてしまう状態とかだとテスト自体ができなかったりするものとかは無視するの?
テストユニットクラスが増えるのは良いけど、テストの為のFakeの為のテストの為のみたいにどんどんクラスが増えてしまって頭抱えてます。


151 :デフォルトの名無しさん:04/07/22 03:34
CppUnit と boost::test は同じ目的のフレームワークだと思うのですが、
機能はまるっきり被ってるんでしょうか?
片方にはあって、片方にないみたいな比較情報が欲しいです。

と質問しようとして、その前にとGoogleに聞いてみたところ、
ttp://lists.boost.org/MailArchives/boost-users/msg04216.php
というスレッドを発見しましたのでここにメモっておきますね。

152 :デフォルトの名無しさん:04/07/22 23:59
>>150
> FakeIO classとかでも良いかもしれないけど、外環境の振る舞いが持ち込まれてしまう状態とかだとテスト自体ができなかったりするものとかは無視するの?
程度問題だが、完全なテストってのは無理。それこそ

double sqrt(double)

だって、完全なテストを行おうと思ったら double 全部の値に対して
テストする必要があるわけだが、そんなんやらんでしょ。

> テストユニットクラスが増えるのは良いけど、テストの為のFakeの為のテストの為のみたいにどんどんクラスが増えてしまって頭抱えてます。
もう少し具体的に書いてくれれば、何かアドバイスできるかも。

153 :デフォルトの名無しさん:04/07/23 05:01
どだいバグがないことを完全に証明するのは無理ってことでしょうね。
ぶっちゃけ悪魔の証明。

154 :デフォルトの名無しさん:04/07/23 14:37
std::basic_stringは?

155 :144:04/07/24 01:46
>>147
なんでもかんでも本物のソース対しては変更を加えずに
テストできる方法がある、と思っていたのですがそうでは無い、ということですね。

サンプルなんかを見てると、テスト対象のソースに手を加えるのはテストケースの失敗を
修正するときだけのように見えるので…

156 :デフォルトの名無しさん:04/07/24 02:30
>ある条件ならメソッドを実行して、条件を満たさなければ実行しない、みたいな
>条件分岐テストはどうやって行えばいいのでしょう?

条件で実行するメソッドが動いたかどうか後でわかる仕組み、ログとかフラグとか、
ほんで、テストケースは

動く条件セット
アサート(動いた?)

動かない条件セット
アサート(動かなかった?)

157 :デフォルトの名無しさん:04/07/25 20:34
C++でTDDをやる場合、実装のコードはヘッダファイルに書くものなんでしょうか。
それとも、やはり修正時には.hと.cppを双方いちいち書き換えていく必要があるのでしょうか。

JUnit(+eclipse)使ったことがあると、CppUnitは手間がかかりすぎるような気がして、結構萎えますね…

158 :デフォルトの名無しさん:04/07/25 20:43
CppUnitが手間がかかるのではなく、C++自体が手間がかかる。

159 :デフォルトの名無しさん:04/07/25 20:53
C++でTDDはやめといたほうが良い、ということ?

160 :デフォルトの名無しさん:04/07/25 20:58
TDDってなんですか?

161 :デフォルトの名無しさん:04/07/25 21:04
テストドリヴンデヴェロップメント

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使う利点ってどんな事?


165 :デフォルトの名無しさん:04/08/04 02:41
エラー起きても止めなくて別のテストできる

166 :デフォルトの名無しさん:04/08/04 04:07
>>164
1. テスト間の結合度を相対的に低くできる。
2. 記法がある程度統一できるので、可読性の向上が期待できる

一方で、フレームワークが使えない環境ではテストできないというものではな
いと思う。あくまでフレームワークは費用対効果を改善するためのもの。


167 :デフォルトの名無しさん:04/11/03 01:00:45
visualstudio.netでcppunitがコンパイル不能ですよ

168 :デフォルトの名無しさん:04/11/03 01:02:27
cppunitはウンコ。
JUnitを見習え

169 :167:04/11/03 03:51:00
なんか成功しました。
C++は言語仕様的に不利だから統合開発環境の側でサポートしてもらわんとやってられんね。
とりあえず、eclipseに期待。

170 :デフォルトの名無しさん:04/11/03 18:06:49
boost::testの今後に期待

171 :デフォルトの名無しさん:04/11/04 01:19:49
コンパイラエラーになることを保証する機能ってある?


172 :デフォルトの名無しさん:04/11/04 07:38:20
>>171
#error

あるいは BOOST_ASSERT()

173 :デフォルトの名無しさん:04/11/04 07:44:09
>>172 そうじゃないよ。

174 :デフォルトの名無しさん:04/11/04 11:48:22
fail

175 :デフォルトの名無しさん:04/12/08 13:16:23
>>162
CxxTestいいね。

176 :デフォルトの名無しさん:04/12/09 21:41:37
>>162
Win32Guiだとなぜかウィンドウが一瞬で消える('A`)
でも便利だな。使わせてもらおう。

177 :176:04/12/09 23:23:15
> Win32Guiだとなぜかウィンドウが一瞬で消える('A`)
自己解決。テストを実行するときに-keepオプション。

178 :176:04/12/09 23:57:20
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も書きたくないのですが…。


180 :デフォルトの名無しさん:05/01/06 00:31:12
>>179
CppUnit はよく知らないけど、
テストコードのコンパイル時に #define private public とかしちゃう方法を思いついた。
あまり良くないとは思うけど、実害は無かったりするのかな?

181 :デフォルトの名無しさん:05/01/06 01:59:33
>180
コンパイル出来無かったヨ

182 :デフォルトの名無しさん:05/01/06 02:45:24
>>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

185 :181:05/01/07 02:25:10
>182
通った通った。

#define private public
#include <boost/test/unit_test.hpp>

としたのがマズかったみたい。

#include <boost/test/unit_test.hpp>
#define private public

としたらOKだったヨ


186 :181:05/01/07 02:33:10
……と思ったけど、やっぱダメだった。

main.obj : error LNK2001: 外部シンボル ""public: static class std::list<(以下略)" は未解決です。
(VC7.1)

てしかられた

187 :デフォルトの名無しさん:05/01/07 02:38:34
>>186
エラーメッセージ略すなよ。
解決を助けてもらうつもりが無いならいいけど。

188 :デフォルトの名無しさん:05/01/07 19:20:52
ネットワーク関連の開発してるんだけど、
相手から送られてくる不正なデータとかを正しくハンドリングできるか、ってのは
どうやって実装するべき?
今はとりあえずテストケース内でスレッドを別に作ってループバックで接続したり、
テストをクライアントとサーバで別に書いて、同時に実行、とかしてんだけど、
ネットワークのI/Oの動作を真似るオブジェクトに差し替え、とかのほうがいいのかな?

189 :デフォルトの名無しさん:05/01/09 15:31:22
CPPUNITのテスト結果をいわゆる「テスト結果報告書」として出力するいい方法ない?

190 :デフォルトの名無しさん:05/01/10 18:13:38
>188
つ[モック・オブジェクトパターン]

40 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)