diff options
author | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2009-10-02 18:40:04 +0000 |
---|---|---|
committer | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2009-10-02 18:40:04 +0000 |
commit | 322bb9cd2be9e51422cb2b82684692e825c2bfb7 (patch) | |
tree | 1e8e75c1ff0c47d6eda9db114a13dfa2b83adf72 /vendors/simpletest/docs/fr/group_test_documentation.html | |
parent | 4ffb02ad9c1b95013a0fbf97cefde827600ecc3f (diff) | |
download | elgg-322bb9cd2be9e51422cb2b82684692e825c2bfb7.tar.gz elgg-322bb9cd2be9e51422cb2b82684692e825c2bfb7.tar.bz2 |
Added simpletest and start of unit tests.
git-svn-id: http://code.elgg.org/elgg/trunk@3503 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'vendors/simpletest/docs/fr/group_test_documentation.html')
-rwxr-xr-x | vendors/simpletest/docs/fr/group_test_documentation.html | 398 |
1 files changed, 398 insertions, 0 deletions
diff --git a/vendors/simpletest/docs/fr/group_test_documentation.html b/vendors/simpletest/docs/fr/group_test_documentation.html new file mode 100755 index 000000000..b993475ab --- /dev/null +++ b/vendors/simpletest/docs/fr/group_test_documentation.html @@ -0,0 +1,398 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Documentation SimpleTest : Grouper des tests</title> +<link rel="stylesheet" type="text/css" href="docs.css" title="Styles"> +</head> +<body> +<div class="menu_back"><div class="menu"> +<a href="index.html">SimpleTest</a> + | + <a href="overview.html">Overview</a> + | + <a href="unit_test_documentation.html">Unit tester</a> + | + <a href="group_test_documentation.html">Group tests</a> + | + <a href="mock_objects_documentation.html">Mock objects</a> + | + <a href="partial_mocks_documentation.html">Partial mocks</a> + | + <a href="reporter_documentation.html">Reporting</a> + | + <a href="expectation_documentation.html">Expectations</a> + | + <a href="web_tester_documentation.html">Web tester</a> + | + <a href="form_testing_documentation.html">Testing forms</a> + | + <a href="authentication_documentation.html">Authentication</a> + | + <a href="browser_documentation.html">Scriptable browser</a> +</div></div> +<h1>Documentation sur le groupement des tests</h1> + This page... + <ul> +<li> + Plusieurs approches pour <a href="#group">grouper des tests</a> ensemble. + </li> +<li> + Combiner des groupes des tests dans des + <a href="#plus-haut">groupes plus grands</a>. + </li> +<li> + Intégrer des <a href="#heritage">scénarios de test hérités</a> + d'un autre type de PHPUnit. + </li> +</ul> +<div class="content"> + <p><a class="target" name="grouper"><h2>Grouper des tests</h2></a></p> + <p> + Pour lancer les scénarios de tests en tant que groupe, + ils devraient être placés dans des fichiers sans le code du lanceur... +<pre> +<strong><?php + require_once('../classes/io.php'); + + class FileTester extends UnitTestCase { + ... + } + + class SocketTester extends UnitTestCase { + ... + } +?></strong> +</pre> + Autant de scénarios que nécessaires peuvent être + mis dans un fichier unique. Ils doivent contenir + tout le code nécessaire, entre autres la bibliothèque testée, + mais aucune des bibliothèques de SimpleTest. + </p> + <p> + Si vous avez étendu l'un ou l'autre des scénarios de test, + vous pouvez aussi les inclure. +<pre> +<?php + require_once('../classes/io.php'); +<strong> + class MyFileTestCase extends UnitTestCase { + ... + } + SimpleTestOptions::ignore('MyFileTestCase');</strong> + + class FileTester extends MyFileTestCase { + ... + } + + class SocketTester extends UnitTestCase { + ... + } +?> +</pre> + La classe <span class="new_code">FileTester</span> ne contient aucun test véritable, + il s'agit d'une classe de base pour d'autres scénarios de test. + Pour cette raison nous utilisons la directive + <span class="new_code">SimpleTestOptions::ignore()</span> pour indiquer + au prochain groupe de tests de l'ignorer. + Cette directive peut se placer n'importe où dans le fichier + et fonctionne quand un fichier complet des scénarios de test + est chargé (cf. ci-dessous). + Nous l'appelons <em>file_test.php</em>. + </p> + <p> + Ensuite nous créons un fichier de groupe de tests, + disons <em>group_test.php</em>. + Vous penserez à un nom plus convaincant, j'en suis sûr. + Nous lui ajoutons le fichier de test avec une méthode sans risque... +<pre> +<?php + require_once('simpletest/unit_tester.php'); + require_once('simpletest/reporter.php');<strong> + require_once('file_test.php'); + + $test = &new GroupTest('All file tests'); + $test->addTestCase(new FileTestCase()); + $test->run(new HtmlReporter());</strong> +?> +</pre> + Ceci instancie le scénario de test avant que + la suite de test ne soit lancée. + Ça pourrait devenir assez onéreux avec + un grand nombre de scénarios de test : + il existe donc une autre méthode qui instancie + la classe uniquement quand elle devient nécessaire... +<pre> +<?php + require_once('simpletest/unit_tester.php'); + require_once('simpletest/reporter.php'); + require_once('file_test.php'); + + $test = &new GroupTest('All file tests');<strong> + $test->addTestClass('FileTestCase');</strong> + $test->run(new HtmlReporter()); +?> +</pre> + Le problème de cette technique est que pour + chaque scénario de test supplémentaire nous aurons à importer + (via <span class="new_code">require_once()</span>) le fichier de code de test + et à instancier manuellement chaque scénario de test. + Nous pouvons nous épargner beaucoup de dactylographie avec... +<pre> +<?php + require_once('simpletest/unit_tester.php'); + require_once('simpletest/reporter.php'); + + $test = &new GroupTest('All file tests');<strong> + $test->addTestFile('file_test.php');</strong> + $test->run(new HtmlReporter()); +?> +</pre> + Voici ce qui vient de se passer : + la classe <span class="new_code">GroupTest</span> a réalisé le + <span class="new_code">require_once()</span> pour nous. + Ensuite elle vérifie si de nouvelles classes de scénario + de test ont été créées par ce nouveau fichier + et les ajoute automatiquement au groupe de tests. + Désormais tout ce qu'il nous reste à faire, + c'est d'ajouter chaque nouveau fichier. + </p> + <p> + Il y a deux choses qui peuvent planter + et qui demandent un minimum d'attention... + <ol> + <li> + Le fichier peut déjà avoir été analysé par PHP + et dans ce cas aucune classe ne sera ajoutée. + Pensez à bien vérifier que les scénarios de test + ne sont inclus que dans ce fichier et dans aucun autre + (Note : avec la nouvelle fonctionnalité <cite>autorun</cite>, + ce problème a maintenant été résolu). + </li> + <li> + Les nouvelles classes d'extension de scénario + de test qui sont incluses seront placées + dans le groupe de tests et exécutées par la même occasion. + Vous aurez à ajouter une directive + <span class="new_code">SimpleTestOptions::ignore()</span> pour ces classes + ou alors pensez à les ajouter avant la ligne + <span class="new_code">GroupTest::addTestFile()</span>. + </li> + </ol> + </p> + + <p><a class="target" name="plus-haut"><h2>Groupements de plus haut niveau</h2></a></p> + <p> + La technique ci-dessus place tous les scénarios de test + dans un unique et grand groupe. + Sauf que pour des projets plus conséquents, + ce n'est probablement pas assez souple; + vous voudriez peut-être grouper les tests tout à fait différemment. + </p> + <p> + Pour obtenir un groupe de tests plus souple + nous pouvons sous classer <span class="new_code">GroupTest</span> + et ensuite l'instancier au cas par cas... +<pre> +<?php + require_once('simpletest/unit_tester.php'); + require_once('simpletest/reporter.php'); + <strong> + class FileGroupTest extends GroupTest { + function FileGroupTest() { + $this->GroupTest('All file tests'); + $this->addTestFile('file_test.php'); + } + }</strong> +?> +</pre> + Ceci nomme le test dans le constructeur + et ensuite ajoute à la fois nos scénarios + de test et un unique groupe en dessous. + Bien sûr nous pouvons ajouter plus d'un groupe à cet instant. + Nous pouvons maintenant invoquer les tests + à partir d'un autre fichier d'exécution... +<pre> +<?php + require_once('file_group_test.php'); + <strong> + $test = &new FileGroupTest(); + $test->run(new HtmlReporter());</strong> +?> +</pre> + ...ou alors nous pouvons les grouper + dans un groupe de tests encore plus grand... +<pre> +<?php + require_once('file_group_test.php'); + <strong> + $test = &new BigGroupTest('Big group'); + $test->addTestCase(new FileGroupTest()); + $test->addTestCase(...); + $test->run(new HtmlReporter());</strong> +?> +</pre> + Si nous souhaitons lancer le groupe de tests original + sans utiliser ses petits fichiers d'exécution, + nous pouvons mettre le code du lanceur de test + derrière des barreaux quand nous créons chaque groupe. +<pre> +<?php + class FileGroupTest extends GroupTest { + function FileGroupTest() { + $this->GroupTest('All file tests'); + $test->addTestFile('file_test.php'); + } + } + <strong> + if (! defined('RUNNER')) { + define('RUNNER', true);</strong> + $test = &new FileGroupTest(); + $test->run(new HtmlReporter()); + } +?> +</pre> + Cette approche exige aux barrières d'être activées + à l'inclusion du fichier de groupe de tests, + mais c'est quand même moins de tracas que beaucoup + de fichiers de lancement éparpillés. + Reste à inclure des barreaux identiques + au niveau supérieur afin de s'assurer que + le <span class="new_code">run()</span> ne sera lancé qu'une seule fois + à partir du script de haut niveau qui l'a invoqué. +<pre> +<?php + define('RUNNER', true); + + require_once('file_group_test.php'); + $test = &new BigGroupTest('Big group'); + $test->addTestCase(new FileGroupTest()); + $test->addTestCase(...); + $test->run(new HtmlReporter()); +?> +</pre> + Comme les scénarios de test normaux, + un <span class="new_code">GroupTest</span> peut être chargé avec la méthode + <span class="new_code">GroupTest::addTestFile()</span>. +<pre> +<?php + define('RUNNER', true); + + $test = &new BigGroupTest('Big group');<strong> + $test->addTestFile('file_group_test.php'); + $test->addTestFile(...);</strong> + $test->run(new HtmlReporter()); +?> +</pre> + </p> + + <p><a class="target" name="heritage"><h2>Intégrer des scénarios de test hérités</h2></a></p> + <p> + Si vous avez déjà des tests unitaires pour votre code + ou alors si vous étendez des classes externes + qui ont déjà leurs propres tests, il y a peu de chances + pour que ceux-ci soient déjà au format SimpleTest. + Heureusement il est possible d'incorporer ces scénarios + de test en provenance d'autres testeurs unitaires + directement dans des groupes de test SimpleTest. + </p> + <p> + Par exemple, supposons que nous ayons + ce scénario de test prévu pour + <a href="http://sourceforge.net/projects/phpunit">PhpUnit</a> + dans le fichier <em>config_test.php</em>... +<pre> +<strong>class ConfigFileTest extends TestCase { + function ConfigFileTest() { + $this->TestCase('Config file test'); + } + + function testContents() { + $config = new ConfigFile('test.conf'); + $this->assertRegexp('/me/', $config->getValue('username')); + } +}</strong> +</pre> + Le groupe de tests peut le reconnaître à partir + du moment où nous mettons l'adaptateur approprié + avant d'ajouter le fichier de test... +<pre> +<?php + require_once('simpletest/unit_tester.php'); + require_once('simpletest/reporter.php');<strong> + require_once('simpletest/adapters/phpunit_test_case.php');</strong> + + $test = &new GroupTest('All file tests');<strong> + $test->addTestFile('config_test.php');</strong> + $test->run(new HtmlReporter()); +?> +</pre> + Il n'y a que deux adaptateurs, + l'autre est pour le paquet testeur unitaire de + <a href="http://pear.php.net/manual/en/package.php.phpunit.php">PEAR</a>... +<pre> +<?php + require_once('simpletest/unit_tester.php'); + require_once('simpletest/reporter.php');<strong> + require_once('simpletest/adapters/pear_test_case.php');</strong> + + $test = &new GroupTest('All file tests');<strong> + $test->addTestFile('some_pear_test_cases.php');</strong> + $test->run(new HtmlReporter()); +?> +</pre> + Les scénarios de test de PEAR peuvent être + librement mélangés avec ceux de SimpleTest + mais vous ne pouvez pas utiliser les assertions + de SimpleTest au sein des versions héritées + des scénarios de test. La raison ? + Une simple vérification que vous ne rendez pas + par accident vos scénarios de test complètement + dépendants de SimpleTest. + Peut-être que vous souhaitez publier + votre bibliothèque sur PEAR par exemple : + ça voudrait dire la livrer avec des scénarios de + test compatibles avec PEAR::PhpUnit. + </p> + + </div> + References and related information... + <ul> +<li> + La page du projet SimpleTest sur + <a href="http://sourceforge.net/projects/simpletest/">SourceForge</a>. + </li> +<li> + La page de téléchargement de SimpleTest sur + <a href="http://www.lastcraft.com/simple_test.php">LastCraft</a>. + </li> +</ul> +<div class="menu_back"><div class="menu"> +<a href="index.html">SimpleTest</a> + | + <a href="overview.html">Overview</a> + | + <a href="unit_test_documentation.html">Unit tester</a> + | + <a href="group_test_documentation.html">Group tests</a> + | + <a href="mock_objects_documentation.html">Mock objects</a> + | + <a href="partial_mocks_documentation.html">Partial mocks</a> + | + <a href="reporter_documentation.html">Reporting</a> + | + <a href="expectation_documentation.html">Expectations</a> + | + <a href="web_tester_documentation.html">Web tester</a> + | + <a href="form_testing_documentation.html">Testing forms</a> + | + <a href="authentication_documentation.html">Authentication</a> + | + <a href="browser_documentation.html">Scriptable browser</a> +</div></div> +<div class="copyright"> + Copyright<br>Marcus Baker 2006 + </div> +</body> +</html> |