~critecia/critecia/trunk

« back to all changes in this revision

Viewing changes to src/app/vendors/simpletest/docs/fr/group_test_documentation.html

  • Committer: Christian A. Reiter
  • Date: 2011-11-16 20:08:35 UTC
  • Revision ID: christian.a.reiter@gmail.com-20111116200835-h3xx0ekm47lububw
fixed jQuery file links

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<html>
2
 
<head>
3
 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4
 
<title>Documentation SimpleTest : Grouper des tests</title>
5
 
<link rel="stylesheet" type="text/css" href="docs.css" title="Styles">
6
 
</head>
7
 
<body>
8
 
<div class="menu_back"><div class="menu">
9
 
<a href="index.html">SimpleTest</a>
10
 
                |
11
 
                <a href="overview.html">Overview</a>
12
 
                |
13
 
                <a href="unit_test_documentation.html">Unit tester</a>
14
 
                |
15
 
                <a href="group_test_documentation.html">Group tests</a>
16
 
                |
17
 
                <a href="mock_objects_documentation.html">Mock objects</a>
18
 
                |
19
 
                <a href="partial_mocks_documentation.html">Partial mocks</a>
20
 
                |
21
 
                <a href="reporter_documentation.html">Reporting</a>
22
 
                |
23
 
                <a href="expectation_documentation.html">Expectations</a>
24
 
                |
25
 
                <a href="web_tester_documentation.html">Web tester</a>
26
 
                |
27
 
                <a href="form_testing_documentation.html">Testing forms</a>
28
 
                |
29
 
                <a href="authentication_documentation.html">Authentication</a>
30
 
                |
31
 
                <a href="browser_documentation.html">Scriptable browser</a>
32
 
</div></div>
33
 
<h1>Documentation sur le groupement des tests</h1>
34
 
        This page...
35
 
        <ul>
36
 
<li>
37
 
            Plusieurs approches pour <a href="#group">grouper des tests</a> ensemble.
38
 
        </li>
39
 
<li>
40
 
            Combiner des groupes des tests dans des
41
 
            <a href="#plus-haut">groupes plus grands</a>.
42
 
        </li>
43
 
<li>
44
 
            Intégrer des <a href="#heritage">scénarios de test hérités</a>
45
 
            d'un autre type de PHPUnit.
46
 
        </li>
47
 
</ul>
48
 
<div class="content">
49
 
        <p><a class="target" name="grouper"><h2>Grouper des tests</h2></a></p>
50
 
            <p>
51
 
                Pour lancer les scénarios de tests en tant que groupe,
52
 
                ils devraient être placés dans des fichiers sans le code du lanceur...
53
 
<pre>
54
 
<strong>&lt;?php
55
 
    require_once('../classes/io.php');
56
 
 
57
 
    class FileTester extends UnitTestCase {
58
 
        ...
59
 
    }
60
 
 
61
 
    class SocketTester extends UnitTestCase {
62
 
        ...
63
 
    }
64
 
?&gt;</strong>
65
 
</pre>
66
 
                Autant de scénarios que nécessaires peuvent être
67
 
                mis dans un fichier unique. Ils doivent contenir
68
 
                tout le code nécessaire, entre autres la bibliothèque testée,
69
 
                mais aucune des bibliothèques de SimpleTest.
70
 
            </p>
71
 
            <p>
72
 
                Si vous avez étendu l'un ou l'autre des scénarios de test,
73
 
                vous pouvez aussi les inclure.
74
 
<pre>
75
 
&lt;?php
76
 
    require_once('../classes/io.php');
77
 
<strong>
78
 
    class MyFileTestCase extends UnitTestCase {
79
 
        ...
80
 
    }
81
 
    SimpleTestOptions::ignore('MyFileTestCase');</strong>
82
 
 
83
 
    class FileTester extends MyFileTestCase {
84
 
        ...
85
 
    }
86
 
 
87
 
    class SocketTester extends UnitTestCase {
88
 
        ...
89
 
    }
90
 
?&gt;
91
 
</pre>
92
 
                La classe <span class="new_code">FileTester</span> ne contient aucun test véritable,
93
 
                il s'agit d'une classe de base pour d'autres scénarios de test.
94
 
                Pour cette raison nous utilisons la directive
95
 
                <span class="new_code">SimpleTestOptions::ignore()</span> pour indiquer
96
 
                au prochain groupe de tests de l'ignorer.
97
 
                Cette directive peut se placer n'importe où dans le fichier
98
 
                et fonctionne quand un fichier complet des scénarios de test
99
 
                est chargé (cf. ci-dessous).
100
 
                Nous l'appelons <em>file_test.php</em>.
101
 
            </p>
102
 
            <p>
103
 
                Ensuite nous créons un fichier de groupe de tests,
104
 
                disons <em>group_test.php</em>.
105
 
                Vous penserez à un nom plus convaincant, j'en suis sûr.
106
 
                Nous lui ajoutons le fichier de test avec une méthode sans risque...
107
 
<pre>
108
 
&lt;?php
109
 
    require_once('simpletest/unit_tester.php');
110
 
    require_once('simpletest/reporter.php');<strong>
111
 
    require_once('file_test.php');
112
 
 
113
 
    $test = &amp;new GroupTest('All file tests');
114
 
    $test-&gt;addTestCase(new FileTestCase());
115
 
    $test-&gt;run(new HtmlReporter());</strong>
116
 
?&gt;
117
 
</pre>
118
 
                Ceci instancie le scénario de test avant que
119
 
                la suite de test ne soit lancée.
120
 
                Ça pourrait devenir assez onéreux avec
121
 
                un grand nombre de scénarios de test : 
122
 
                il existe donc une autre méthode qui instancie
123
 
                la classe uniquement quand elle devient nécessaire...
124
 
<pre>
125
 
&lt;?php
126
 
    require_once('simpletest/unit_tester.php');
127
 
    require_once('simpletest/reporter.php');
128
 
    require_once('file_test.php');
129
 
 
130
 
    $test = &amp;new GroupTest('All file tests');<strong>
131
 
    $test-&gt;addTestClass('FileTestCase');</strong>
132
 
    $test-&gt;run(new HtmlReporter());
133
 
?&gt;
134
 
</pre>
135
 
                Le problème de cette technique est que pour
136
 
                chaque scénario de test supplémentaire nous aurons à importer
137
 
                (via <span class="new_code">require_once()</span>) le fichier de code de test
138
 
                et à instancier manuellement chaque scénario de test.
139
 
                Nous pouvons nous épargner beaucoup de dactylographie avec...
140
 
<pre>
141
 
&lt;?php
142
 
    require_once('simpletest/unit_tester.php');
143
 
    require_once('simpletest/reporter.php');
144
 
 
145
 
    $test = &amp;new GroupTest('All file tests');<strong>
146
 
    $test-&gt;addTestFile('file_test.php');</strong>
147
 
    $test-&gt;run(new HtmlReporter());
148
 
?&gt;
149
 
</pre>
150
 
                Voici ce qui vient de se passer :
151
 
                la classe <span class="new_code">GroupTest</span> a réalisé le
152
 
                <span class="new_code">require_once()</span> pour nous.
153
 
                Ensuite elle vérifie si de nouvelles classes de scénario
154
 
                de test ont été créées par ce nouveau fichier
155
 
                et les ajoute automatiquement au groupe de tests.
156
 
                Désormais tout ce qu'il nous reste à faire,
157
 
                c'est d'ajouter chaque nouveau fichier.
158
 
            </p>
159
 
            <p>
160
 
                Il y a deux choses qui peuvent planter
161
 
                et qui demandent un minimum d'attention...
162
 
                <ol>
163
 
                    <li>
164
 
                        Le fichier peut déjà avoir été analysé par PHP
165
 
                        et dans ce cas aucune classe ne sera ajoutée.
166
 
                        Pensez à bien vérifier que les scénarios de test
167
 
                        ne sont inclus que dans ce fichier et dans aucun autre
168
 
                        (Note : avec la nouvelle fonctionnalité <cite>autorun</cite>,
169
 
                        ce problème a maintenant été résolu).
170
 
                    </li>
171
 
                    <li>
172
 
                        Les nouvelles classes d'extension de scénario
173
 
                        de test qui sont incluses seront placées
174
 
                        dans le groupe de tests et exécutées par la même occasion.
175
 
                        Vous aurez à ajouter une directive
176
 
                        <span class="new_code">SimpleTestOptions::ignore()</span> pour ces classes
177
 
                        ou alors pensez à les ajouter avant la ligne
178
 
                        <span class="new_code">GroupTest::addTestFile()</span>.
179
 
                    </li>
180
 
                </ol>
181
 
            </p>
182
 
        
183
 
        <p><a class="target" name="plus-haut"><h2>Groupements de plus haut niveau</h2></a></p>
184
 
            <p>
185
 
                La technique ci-dessus place tous les scénarios de test
186
 
                dans un unique et grand groupe.
187
 
                Sauf que pour des projets plus conséquents,
188
 
                ce n'est probablement pas assez souple;
189
 
                vous voudriez peut-être grouper les tests tout à fait différemment.
190
 
            </p>
191
 
            <p>
192
 
                Pour obtenir un groupe de tests plus souple
193
 
                nous pouvons sous classer <span class="new_code">GroupTest</span>
194
 
                et ensuite l'instancier au cas par cas...
195
 
<pre>
196
 
&lt;?php
197
 
    require_once('simpletest/unit_tester.php');
198
 
    require_once('simpletest/reporter.php');
199
 
    <strong>
200
 
    class FileGroupTest extends GroupTest {
201
 
        function FileGroupTest() {
202
 
            $this-&gt;GroupTest('All file tests');
203
 
            $this-&gt;addTestFile('file_test.php');
204
 
        }
205
 
    }</strong>
206
 
?&gt;
207
 
</pre>
208
 
                Ceci nomme le test dans le constructeur
209
 
                et ensuite ajoute à la fois nos scénarios
210
 
                de test et un unique groupe en dessous.
211
 
                Bien sûr nous pouvons ajouter plus d'un groupe à cet instant.
212
 
                Nous pouvons maintenant invoquer les tests
213
 
                à partir d'un autre fichier d'exécution...
214
 
<pre>
215
 
&lt;?php
216
 
    require_once('file_group_test.php');
217
 
    <strong>
218
 
    $test = &amp;new FileGroupTest();
219
 
    $test-&gt;run(new HtmlReporter());</strong>
220
 
?&gt;
221
 
</pre>
222
 
                ...ou alors nous pouvons les grouper
223
 
                dans un groupe de tests encore plus grand...
224
 
<pre>
225
 
&lt;?php
226
 
    require_once('file_group_test.php');
227
 
    <strong>
228
 
    $test = &amp;new BigGroupTest('Big group');
229
 
    $test-&gt;addTestCase(new FileGroupTest());
230
 
    $test-&gt;addTestCase(...);
231
 
    $test-&gt;run(new HtmlReporter());</strong>
232
 
?&gt;
233
 
</pre>
234
 
                Si nous souhaitons lancer le groupe de tests original
235
 
                sans utiliser ses petits fichiers d'exécution,
236
 
                nous pouvons mettre le code du lanceur de test
237
 
                derrière des barreaux quand nous créons chaque groupe.
238
 
<pre>
239
 
&lt;?php
240
 
    class FileGroupTest extends GroupTest {
241
 
        function FileGroupTest() {
242
 
            $this-&gt;GroupTest('All file tests');
243
 
            $test-&gt;addTestFile('file_test.php');
244
 
        }
245
 
    }
246
 
    <strong>
247
 
    if (! defined('RUNNER')) {
248
 
        define('RUNNER', true);</strong>
249
 
        $test = &amp;new FileGroupTest();
250
 
        $test-&gt;run(new HtmlReporter());
251
 
    }
252
 
?&gt;
253
 
</pre>
254
 
                Cette approche exige aux barrières d'être activées
255
 
                à l'inclusion du fichier de groupe de tests,
256
 
                mais c'est quand même moins de tracas que beaucoup
257
 
                de fichiers de lancement éparpillés.
258
 
                Reste à inclure des barreaux identiques
259
 
                au niveau supérieur afin de s'assurer que
260
 
                le <span class="new_code">run()</span> ne sera lancé qu'une seule fois
261
 
                à partir du script de haut niveau qui l'a invoqué.
262
 
<pre>
263
 
&lt;?php
264
 
    define('RUNNER', true);
265
 
 
266
 
    require_once('file_group_test.php');
267
 
    $test = &amp;new BigGroupTest('Big group');
268
 
    $test-&gt;addTestCase(new FileGroupTest());
269
 
    $test-&gt;addTestCase(...);
270
 
    $test-&gt;run(new HtmlReporter());
271
 
?&gt;
272
 
</pre>
273
 
                Comme les scénarios de test normaux,
274
 
                un <span class="new_code">GroupTest</span> peut être chargé avec la méthode
275
 
                <span class="new_code">GroupTest::addTestFile()</span>.
276
 
<pre>  
277
 
&lt;?php   
278
 
    define('RUNNER', true); 
279
 
        
280
 
    $test = &amp;new BigGroupTest('Big group');<strong> 
281
 
    $test-&gt;addTestFile('file_group_test.php');  
282
 
    $test-&gt;addTestFile(...);</strong>   
283
 
    $test-&gt;run(new HtmlReporter()); 
284
 
?&gt;  
285
 
</pre>
286
 
            </p>
287
 
        
288
 
        <p><a class="target" name="heritage"><h2>Intégrer des scénarios de test hérités</h2></a></p>
289
 
            <p>
290
 
                Si vous avez déjà des tests unitaires pour votre code
291
 
                ou alors si vous étendez des classes externes
292
 
                qui ont déjà leurs propres tests, il y a peu de chances
293
 
                pour que ceux-ci soient déjà au format SimpleTest.
294
 
                Heureusement il est possible d'incorporer ces scénarios
295
 
                de test en provenance d'autres testeurs unitaires
296
 
                directement dans des groupes de test SimpleTest.
297
 
            </p>
298
 
            <p>
299
 
                Par exemple, supposons que nous ayons
300
 
                ce scénario de test prévu pour
301
 
                <a href="http://sourceforge.net/projects/phpunit">PhpUnit</a>
302
 
                dans le fichier <em>config_test.php</em>...
303
 
<pre>
304
 
<strong>class ConfigFileTest extends TestCase {
305
 
    function ConfigFileTest() {
306
 
        $this-&gt;TestCase('Config file test');
307
 
    }
308
 
    
309
 
    function testContents() {
310
 
        $config = new ConfigFile('test.conf');
311
 
        $this-&gt;assertRegexp('/me/', $config-&gt;getValue('username'));
312
 
    }
313
 
}</strong>
314
 
</pre>
315
 
                Le groupe de tests peut le reconnaître à partir
316
 
                du moment où nous mettons l'adaptateur approprié
317
 
                avant d'ajouter le fichier de test...
318
 
<pre>
319
 
&lt;?php
320
 
    require_once('simpletest/unit_tester.php');
321
 
    require_once('simpletest/reporter.php');<strong>
322
 
    require_once('simpletest/adapters/phpunit_test_case.php');</strong>
323
 
 
324
 
    $test = &amp;new GroupTest('All file tests');<strong>
325
 
    $test-&gt;addTestFile('config_test.php');</strong>
326
 
    $test-&gt;run(new HtmlReporter());
327
 
?&gt;
328
 
</pre>
329
 
                Il n'y a que deux adaptateurs,
330
 
                l'autre est pour le paquet testeur unitaire de
331
 
                <a href="http://pear.php.net/manual/en/package.php.phpunit.php">PEAR</a>...
332
 
<pre>
333
 
&lt;?php
334
 
    require_once('simpletest/unit_tester.php');
335
 
    require_once('simpletest/reporter.php');<strong>
336
 
    require_once('simpletest/adapters/pear_test_case.php');</strong>
337
 
 
338
 
    $test = &amp;new GroupTest('All file tests');<strong>
339
 
    $test-&gt;addTestFile('some_pear_test_cases.php');</strong>
340
 
    $test-&gt;run(new HtmlReporter());
341
 
?&gt;
342
 
</pre>
343
 
                Les scénarios de test de PEAR peuvent être
344
 
                librement mélangés avec ceux de SimpleTest
345
 
                mais vous ne pouvez pas utiliser les assertions
346
 
                de SimpleTest au sein des versions héritées
347
 
                des scénarios de test. La raison ?
348
 
                Une simple vérification que vous ne rendez pas
349
 
                par accident vos scénarios de test complètement
350
 
                dépendants de SimpleTest.
351
 
                Peut-être que vous souhaitez publier
352
 
                votre bibliothèque sur PEAR par exemple :
353
 
                ça voudrait dire la livrer avec des scénarios de
354
 
                test compatibles avec PEAR::PhpUnit.
355
 
            </p>
356
 
        
357
 
    </div>
358
 
        References and related information...
359
 
        <ul>
360
 
<li>
361
 
            La page du projet SimpleTest sur
362
 
            <a href="http://sourceforge.net/projects/simpletest/">SourceForge</a>.
363
 
        </li>
364
 
<li>
365
 
            La page de téléchargement de SimpleTest sur
366
 
            <a href="http://www.lastcraft.com/simple_test.php">LastCraft</a>.
367
 
        </li>
368
 
</ul>
369
 
<div class="menu_back"><div class="menu">
370
 
<a href="index.html">SimpleTest</a>
371
 
                |
372
 
                <a href="overview.html">Overview</a>
373
 
                |
374
 
                <a href="unit_test_documentation.html">Unit tester</a>
375
 
                |
376
 
                <a href="group_test_documentation.html">Group tests</a>
377
 
                |
378
 
                <a href="mock_objects_documentation.html">Mock objects</a>
379
 
                |
380
 
                <a href="partial_mocks_documentation.html">Partial mocks</a>
381
 
                |
382
 
                <a href="reporter_documentation.html">Reporting</a>
383
 
                |
384
 
                <a href="expectation_documentation.html">Expectations</a>
385
 
                |
386
 
                <a href="web_tester_documentation.html">Web tester</a>
387
 
                |
388
 
                <a href="form_testing_documentation.html">Testing forms</a>
389
 
                |
390
 
                <a href="authentication_documentation.html">Authentication</a>
391
 
                |
392
 
                <a href="browser_documentation.html">Scriptable browser</a>
393
 
</div></div>
394
 
<div class="copyright">
395
 
            Copyright<br>Marcus Baker 2006
396
 
        </div>
397
 
</body>
398
 
</html>