source: trunk/doc/src/ja_JP/development/qtestlib.qdoc

Last change on this file was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 18.6 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation (qt-info@nokia.com)
6**
7** This file is part of the documentation of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:FDL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in a
14** written agreement between you and Nokia.
15**
16** GNU Free Documentation License
17** Alternatively, this file may be used under the terms of the GNU Free
18** Documentation License version 1.3 as published by the Free Software
19** Foundation and appearing in the file included in the packaging of this
20** file.
21**
22** If you have questions regarding the use of this file, please contact
23** Nokia at qt-info@nokia.com.
24** $QT_END_LICENSE$
25**
26****************************************************************************/
27
28/*!
29 \page qtestlib-tutorial.html
30 \brief QTestLib を䜿ったテストの導å…
31¥ã‚¬ã‚€ãƒ‰
32 \contentspage QTestLib マニュアル
33 \nextpage {第1ç« : ナニットテストの䜜成}{第1ç« }
34
35 \title QTestLib チュヌトリアル
36
37 このチュヌトリアルでは QTestLib フレヌムワヌクの機胜の初歩的な䜿い方を説明したす。
38 このチュヌトリアルはå…
39š5章で構成されおいたす:
40
41 \list 1
42 \o \l {第1ç« : ナニットテストの䜜成}{ナニットテストの䜜成}
43 \o \l {第2ç« : デヌタドリブンテスト}{デヌタドリブンテスト}
44 \o \l {第3ç« : GUI むベントのシミュレヌト}{GUI むベントのシミュレヌト}
45 \o \l {第4ç« : GUI むベントの再珟}{GUI むベントの再珟}
46 \o \l {第5ç« : ベンチマヌクの䜜成}{ベンチマヌクの䜜成}
47 \endlist
48
49*/
50
51
52/*!
53 \example qtestlib/tutorial1
54
55 \contentspage {QTestLib チュヌトリアル}{目次}
56 \nextpage {第2ç« : デヌタドリブンテスト}{第2ç« }
57
58 \title 第1ç« : ナニットテストの䜜成
59
60 第1章では、クラスのテストを行うシンプルなナニットテストを䜜成しお実行する方法を説明したす。
61
62 \section1 テストを䜜成する
63
64 QString クラスの挙動をテストするず仮定したしょう。
65 たず、テスト関数を含むクラスが必
66芁です。
67 このクラスは、 QObject を継承する必
68芁がありたす:
69
70 \snippet examples/qtestlib/tutorial1/testqstring.cpp 0
71
72 QTest ヘッダヌを include しおください。
73 それから、テストフレヌムワヌクがテスト関数を怜玢しお実行できるよう、
74 テスト関数を private slot ずしお宣蚀する必
75芁がありたす。
76
77 次に、テスト関数を実装
78したす。実装
79は以䞋のようになりたす:
80
81 \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 8
82
83 \l QVERIFY() マクロは、匕数ずしお枡される匏を評䟡したす。
84 匏が真ず評䟡されるずテスト関数の実行が継続されたす。
85 そうでなければ、゚ラヌメッセヌゞがテストログに远加されテスト関数の実行が停止したす。
86
87 テストログに詳现情
88報を远加したい堎合は、
89 \l QCOMPARE() マクロを代わりに䜿甚しおください:
90
91 \snippet examples/qtestlib/tutorial1/testqstring.cpp 1
92
93 文字列が等しくない堎合、䞡方の文字列の内
94容がテストログに远加され、
95 比范に倱敗した理由を盎ちに確認できたす。
96
97 最埌に、テストケヌスを実行可胜にするために以䞋の2行が必
98芁ずなりたす:
99
100 \snippet examples/qtestlib/tutorial1/testqstring.cpp 2
101
102 \l QTEST_MAIN() マクロは、すべおのテスト関数を実行するシンプルな
103 \c main() 関数に展開されたす。
104 テストクラスの宣蚀ず実装
105が \c .cpp ファむルに存圚する堎合、
106 Qt のメタオブゞェクト機胜を動䜜させるために、
107 生成された moc ファむルを include する必
108芁がありたす。
109
110 \section1 テストを実行する
111
112 䜜成したテストを実行しおみたしょう。
113 テストが \c testqstring.cpp
114 ずしお空のディレクトリに保存されおいるず仮定しお、
115 qmake を䜿甚しおプロゞェクトを䜜成し、makefile を生成したす。
116
117 \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 9
118
119 \bold {泚:} Windows をお䜿いの堎合、 \c make を \c nmake たたは、
120 任意のビルドツヌルに眮き換えおください。
121
122 䜜成した実行ファむルを実行するず、次の出力が衚瀺されたす:
123
124 \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 10
125
126 おめでずうございたす!
127 QTestLib フレヌムワヌクを䜿甚しお、
128 最初のナニットテストの䜜成ず実行に成功したした。
129*/
130
131/*!
132 \example qtestlib/tutorial2
133
134 \previouspage {第1ç« : ナニットテストの䜜成}{第1ç« }
135 \contentspage {QTestLib チュヌトリアル}{目次}
136 \nextpage {第3ç« : GUI むベントのシミュレヌト}{第3ç« }
137
138 \title 第2ç« : デヌタドリブンテスト
139
140 本章ではテストを耇数回、それぞれ異なるテストデヌタを䜿甚しお行う方法に぀いお、
141 䟋を瀺しながら説明したす。
142
143 これたでは、テストデヌタをテスト関数にハヌドコヌドしおいたした。
144 この堎合、テストデヌタを远加した関数は以䞋のようになりたす:
145
146 \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 11
147
148 関数が繰り返しを行うコヌドによっお分散するのを防ぐために、
149 QTestLib はテストデヌタのテスト関数ぞの远加をサポヌトしたす。
150 そのために、別の private slot をテストクラスに远加する必
151芁がありたす:
152
153 \snippet examples/qtestlib/tutorial2/testqstring.cpp 0
154
155 \section1 デヌタ関数を蚘述する
156
157 テスト関数に関連するデヌタ関数では、テスト関数ず同じ関数名を䜿甚しお、
158 末尟に \c{_data} を远加したす。
159 デヌタ関数は以䞋のようになりたす:
160
161 \snippet examples/qtestlib/tutorial2/testqstring.cpp 1
162
163 たず、 \l QTest::addColumn() 関数を䜿甚しお、
164 テストテヌブルの2぀の芁玠(テスト文字列(\c{"string"})および、
165 QString::toUpper() 関数をその文字列に適甚するずきに予期された結果(\c{"result"}))
166 を定矩したす。
167
168 次に、 \l QTest::newRow() 関数を䜿甚しお、
169 デヌタをテヌブルに远加したす。
170 それぞれのデヌタセットは、テストテヌブルでは別々
171の行(Row)になりたす。
172
173 \l QTest::newRow() は、デヌタセット名をその匕数ずしお受け付けたす。
174 テストに倱敗した堎合、テストログでこのデヌタセット名が䜿甚され、
175 倱敗したデヌタの䞀芧が衚瀺されたす。
176 続いお、最初に任意の文字列(\c{"string"})を、次に
177 QString::toUpper() 関数をその文字列(\c{"string"})に適甚するずきに予期された結果(\c{"result"})の順に、
178 テヌブル行にデヌタセットをストリヌミングしたす。
179
180 テストデヌタずは、二次å…
181ƒãƒ†ãƒŒãƒ–ルを指したす。
182 ここでは、\c string および \c result ず呌ばれる2぀の列ず3぀の行が含たれたす。
183 さらに、むンデックスず同様に、各行に名前を関連付けたす:
184
185 \table
186 \header
187 \o index
188 \o name
189 \o string
190 \o result
191 \row
192 \o 0
193 \o all lower
194 \o "hello"
195 \o HELLO
196 \row
197 \o 1
198 \o mixed
199 \o "Hello"
200 \o HELLO
201 \row
202 \o 2
203 \o all upper
204 \o "HELLO"
205 \o HELLO
206 \endtable
207
208 \section1 テスト関数を曞き換える
209
210 ここで、テスト関数の曞き換えを行いたす:
211
212 \snippet examples/qtestlib/tutorial2/testqstring.cpp 2
213
214 TestQString::toUpper() 関数は 3 回実行されたす。
215 すなわち、関連する TestQString::toUpper_data()
216 関数で䜜成したテストテヌブルの各゚ントリ毎に䞀床実行されたす。
217
218 TestQString::toUpper() 関数では
219 たず、 \l QFETCH() マクロを䜿甚しお、デヌタセットの2぀の芁玠を取埗したす。
220 \l QFETCH() は、芁玠のデヌタタむプず芁玠名の、
221 2 ぀の匕数を取りたす。
222 次に \l QCOMPARE() マクロを䜿甚しお、テストを実行したす。
223
224 このアプロヌチにより、テストの修正を行うこずなく
225 テストに新芏デヌタを非垞に簡単に远加できたす。
226
227 このテストの堎合も、テストケヌスを実行可胜にするには、
228 同様に以䞋の2行が必
229芁です:
230
231 \snippet examples/qtestlib/tutorial2/testqstring.cpp 3
232
233 これたでず同様に、 \l QTEST_MAIN() マクロは
234 すべおのテスト関数を実行するシンプルな
235 \c main() 関数に展開されたす。
236 テストクラスの宣蚀ず実装
237が \c .cpp ファむルに存圚する堎合、
238 Qt のメタオブゞェクト機胜を動䜜させるために、
239 生成された moc ファむルを include する必
240芁がありたす。
241
242*/
243
244/*!
245 \example qtestlib/tutorial3
246
247 \previouspage {第2ç« : デヌタドリブンテスト}{第2ç« }
248 \contentspage {QTestLib チュヌトリアル}{目次}
249 \nextpage {第4ç« : GUI むベントの再珟}{第4ç« }
250
251 \title 第3ç« : GUI むベントのシミュレヌト
252
253 QTestLib にはグラフィカルナヌザむンタヌフェヌスをテストするための機胜がありたす。
254 QTestLib は、ネむティブなりィンドりシステムのむベントをシミュレヌトする代わりに、
255 Qt の内
256郚で䜿われるむベントを送信したす。
257 このため、テストが実行されるコンピュヌタには
258 副次的な悪圱響が発生したせん。
259
260 本章では、シンプルな GUI テストを䜜成する方法を確認したす。
261
262 \section1 GUI テストを䜜成する
263
264 今回は、 QLineEdit クラスの挙動をテストするず仮定したしょう。
265 これたでず同様に、テスト関数を含むクラスが必
266芁です:
267
268 \snippet examples/qtestlib/tutorial3/testgui.cpp 0
269
270 唯䞀の違いは、 QTest だけでなく、 QtGui クラスの宣蚀を
271 include する必
272芁があるこずです。
273
274 \snippet examples/qtestlib/tutorial3/testgui.cpp 1
275
276 テスト関数を実装
277する際は、最初に QLineEdit を䜜成したす。
278 次に、 \l QTest::keyClicks() 関数を䜿甚しお、
279 "hello world" をラむン゚ディットにå…
280¥åŠ›ã™ã‚‹æ“äœœã‚’ã‚·ãƒŸãƒ¥ãƒ¬ãƒŒãƒˆã—ãŸã™ã€‚
281
282 \note キヌボヌドショヌトカットを正しくテストするには、
283 りィゞェットの衚瀺も必
284芁になりたす。
285
286 QTest::keyClicks() は、
287 りィゞェットのキヌシヌケンスのå…
288¥åŠ›ã‚’ã‚·ãƒŸãƒ¥ãƒ¬ãƒŒãƒˆã—ãŸã™ã€‚
289 必
290芁に応じおキヌボヌド修食子の指定や、
291 各キヌå…
292¥åŠ›åŸŒã®é…
293å»¶(ミリ秒単䜍)を指定するこずができたす。
294 同様に、 QTest::keyClick() 、 QTest::keyPress() 、 QTest::keyRelease() 、
295 QTest::mouseClick() 、 QTest::mouseDClick() 、 QTest::mouseMove() 、
296 QTest::mousePress() 及び QTest::mouseRelease() 関数を䜿甚しお、
297 関連付けられた GUI むベントをシミュレヌトできたす。
298
299 最埌に、 \l QCOMPARE() マクロを䜿甚しお、
300 ラむン゚ディットの文字列が正しいかどうか確認したす。
301
302 これたでず同様に、
303 テストケヌスを実行可胜にするには、
304 以䞋の2行が必
305芁です:
306
307 \snippet examples/qtestlib/tutorial3/testgui.cpp 2
308
309 QTEST_MAIN() マクロは
310 すべおのテスト関数を実行するシンプルな
311 \c main() 関数に展開されたす。
312 テストクラスの宣蚀ず実装
313が \c .cpp ファむルに存圚する堎合、
314 Qt のメタオブゞェクト機胜を動䜜させるために、
315 生成された moc ファむルを include する必
316芁がありたす。
317*/
318
319/*!
320 \example qtestlib/tutorial4
321
322 \previouspage {第3ç« : GUI むベントのシミュレヌト}{第3ç« }
323 \contentspage {QTestLib チュヌトリアル}{目次}
324 \nextpage {第5ç« : ベンチマヌクの䜜成}{第5ç« }
325
326 \title 第4ç« : GUI むベントの再珟
327
328 本章では、GUI むベントをシミュレヌトしたり、
329 あるりィゞェットで䞀連の GUI むベントを再生したり保存したりする方法に぀いお説明したす。
330
331 䞀連のむベントを保存しお再生するアプロヌチは、
332 \l{第2ç« : デヌタドリブンテスト}{第2ç« }
333 で説明したアプロヌチずよく䌌おいたす。
334 必
335芁な倉曎は、テストクラスにデヌタ関数を远加するこずです:
336
337 \snippet examples/qtestlib/tutorial4/testgui.cpp 0
338
339 \section1 デヌタ関数を蚘述する
340
341 これたでず同様にテスト関数に関連するデヌタ関数では、
342 テスト関数ず同じ名前を䜿甚しお末尟に \c{_data} を远加したす。
343
344 \snippet examples/qtestlib/tutorial4/testgui.cpp 1
345
346 たず、 QTest::addColumn() 関数を䜿甚しお、
347 テヌブルの2぀の芁玠(GUI むベントのリスト(\c{"events"})および、
348 QWidget のむベントのリストを適甚するずきに予期された結果(\c{"expected"}))を定矩したす。
349 最初の芁玠の型は \l QTestEventList であるこずに泚意しおください。
350
351 QTestEventList では、埌で䜿甚するテストデヌタの保存を行うために
352 GUI むベントを読み蟌んだり、 QWidget りィゞェットで再生したりできたす。
353
354 珟圚のデヌタ関数で、 \l QTestEventList を2぀䜜成したす。
355 最初のリストには 'a' キヌを䞀床だけå…
356¥åŠ›ã—ãŸã™ã€‚
357 QTestEventList::addKeyClick() 関数を䜿甚しお、
358 リストにむベントを远加したす。
359 次に、QTest::newRow() 関数を䜿甚しおデヌタセットに名前を付けお、
360 テヌブルにむベントリストおよび予期された結果をストリヌミングしたす。
361
362 2぀目のリストには、2぀のキヌå…
363¥åŠ›('a' に続いおバックスペヌス(Qt::Key_Backspace))を蚭定したす。
364 QTestEventList::addKeyClick() を䜿甚しおリストにむベントを远加し、
365 QTest::newRow() を䜿甚しお名前を関連付けたテヌブルにむベントリストおよび予期された結果を挿å…
366¥ã—たす。
367
368 \section1 テスト関数を曞き換える
369
370 ここで、テストの曞き換えを行いたす:
371
372 \snippet examples/qtestlib/tutorial4/testgui.cpp 2
373
374 TestGui::testGui() 関数は2回実行されたす。
375 関連する TestGui::testGui_data()
376 関数で䜜成したテストデヌタの各゚ントリ毎にそれぞれ実行されたす。
377
378 たず、\l QFETCH() マクロを䜿甚しお、デヌタセットの2぀の芁玠を取埗したす。
379 \l QFETCH() は、芁玠のデヌタ型ず芁玠名の2぀の匕数を取りたす。
380 次に QLineEdit を䜜成し、 QTestEventList::simulate() 関数を䜿甚しお
381 りィゞェットにむベントのリストを適甚したす。
382
383 最埌に、 QCOMPARE() マクロを䜿甚しおラむン゚ディットの文字列が正しいかどうか確認したす。
384
385 これたでず同様に、
386 テストケヌスを実行可胜にするには、
387 以䞋の2行が必
388芁です:
389
390 \snippet examples/qtestlib/tutorial4/testgui.cpp 3
391
392 \l QTEST_MAIN() マクロは
393 すべおのテスト関数を実行するシンプルな
394 \c main() 関数に展開されたす。
395 テストクラスの宣蚀ず実装
396が \c .cpp ファむルに存圚する堎合、
397 Qt のメタオブゞェクト機胜を動䜜させるために、
398 生成された moc ファむルを include する必
399芁がありたす。
400*/
401
402/*!
403 \example qtestlib/tutorial5
404
405 \previouspage {第4ç« : GUI むベントの再珟}{第4ç« }
406 \contentspage {QTestLib チュヌトリアル}{目次}
407
408 \title 第5ç« : ベンチマヌクの䜜成
409
410 最終章ずなる本章では QTestLib を䜿っおベンチマヌクを䜜成する方法に぀いお説明したす。
411
412 \section1 ベンチマヌクの䜜成
413 ベンチマヌクを䜜成するには QBENCHMARK マクロを甚いおテスト関数を拡匵したす。
414 ベンチマヌクテスト関数には通垞、テストの準備コヌドず枬定するコヌドを含む
415 QBENCHMARK マクロが䞀぀含たれたす。
416 QString::localeAwareCompare() のベンチマヌクを行う関数は以䞋のようになりたす。
417
418 \snippet examples/qtestlib/tutorial5/benchmarking.cpp 0
419
420 枬定の準備は関数の最初に行われおいたす。
421 この時点では枬定は始たっおいたせん。
422 QBENCHMARK マクロで囲たれたブロックの䞭身のみが蚈枬されたす。
423 このブロックの内
424郚は正確な枬定を行うために、䜕床か繰り返し実行される堎合がありたす。
425
426 \l {testlib-benchmarking-measurement}{ベンチマヌクの方法}(バック゚ンド)は䜕皮類か甚意されおおり、
427 コマンドラむン匕数から遞択するこずが出来たす。
428
429 \section1 デヌタ関数
430
431 デヌタ関数は耇数のデヌタでベンチマヌクを行うテストを䜜成するのに有甚です。
432 たずえば、ロケヌル準拠ず暙準的な比范を行う堎合は以䞋のようになりたす。
433
434 \snippet examples/qtestlib/tutorial5/benchmarking.cpp 1
435
436 テスト関数ではデヌタに埓っおベンチマヌクする手法を決定したす。
437
438 \snippet examples/qtestlib/tutorial5/benchmarking.cpp 2
439
440 "if (useLocaleCompare)" 文はそのオヌバヘッドを枬定察象倖ずするために
441 QBENCHMARK マクロのブロックの倖郚にありたす。
442 ベンチマヌクの実行時にはそれぞれどちらか䞀぀の QBENCHMARK マクロが実行されたす。
443
444 \section1 倖郚ツヌル
445
446 テストデヌタの可芖化を行うためのツヌルが Qt Labs Web サむトの
447 \l{qtestlib-tools} プロゞェクトに含たれおいたす。
448 そこには実行したテストの結果からパフォヌマンスを比范したり、
449 パフォヌマンスのWeb甚グラフを䜜成するツヌルが含たれおいたす。
450
451 それらのツヌルの詳现ず簡単なグラフの䟋は
452 \l{qtestlib-tools Announcement} を参ç…
453§ã—おください。
454
455*/
456
457
458
Note: See TracBrowser for help on using the repository browser.