group_test_documentation.html.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 399 行 · 第 1/2 页

SVN-BASE
399
字号
<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>&lt;?php    require_once('../classes/io.php');    class FileTester extends UnitTestCase {        ...    }    class SocketTester extends UnitTestCase {        ...    }?&gt;</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>&lt;?php    require_once('../classes/io.php');<strong>    class MyFileTestCase extends UnitTestCase {        ...    }    SimpleTestOptions::ignore('MyFileTestCase');</strong>    class FileTester extends MyFileTestCase {        ...    }    class SocketTester extends UnitTestCase {        ...    }?&gt;</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>&lt;?php    require_once('simpletest/unit_tester.php');    require_once('simpletest/reporter.php');<strong>    require_once('file_test.php');    $test = &amp;new GroupTest('All file tests');    $test-&gt;addTestCase(new FileTestCase());    $test-&gt;run(new HtmlReporter());</strong>?&gt;</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>&lt;?php    require_once('simpletest/unit_tester.php');    require_once('simpletest/reporter.php');    require_once('file_test.php');    $test = &amp;new GroupTest('All file tests');<strong>    $test-&gt;addTestClass('FileTestCase');</strong>    $test-&gt;run(new HtmlReporter());?&gt;</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>&lt;?php    require_once('simpletest/unit_tester.php');    require_once('simpletest/reporter.php');    $test = &amp;new GroupTest('All file tests');<strong>    $test-&gt;addTestFile('file_test.php');</strong>    $test-&gt;run(new HtmlReporter());?&gt;</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>&lt;?php    require_once('simpletest/unit_tester.php');    require_once('simpletest/reporter.php');    <strong>    class FileGroupTest extends GroupTest {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?