unit_test_documentation.html.svn-base

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

SVN-BASE
448
字号
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Documentation SimpleTest pour les tests de r茅gression en PHP</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 les tests unitaires en PHP</h1>        This page...        <ul><li>            <a href="#unitaire">Sc茅narios de test unitaire</a>            et op茅rations basiques.        </li><li>            <a href="#extension_unitaire">脡tendre des sc茅narios de test</a>            pour les personnaliser 脿 votre propre projet.        </li><li>            <a href="#lancement_unitaire">Lancer un sc茅nario seul</a>            comme un script unique.        </li></ul><div class="content">        <p><a class="target" name="unitaire"><h2>Sc茅narios de tests unitaires</h2></a></p>            <p>                Le coeur du syst猫me est un framework de tests de r茅gression                construit autour des sc茅narios de test.                Un exemple de sc茅nario de test ressemble 脿...<pre><strong>class FileTestCase extends UnitTestCase {}</strong></pre>                Si aucun nom de test n'est fourni au moment                de la liaison avec le constructeur alors                le nom de la classe sera utilis茅.                Il s'agit du nom qui sera affich茅 dans les r茅sultats du test.            </p>            <p>                Les v茅ritables tests sont ajout茅s en tant que m茅thode                dans le sc茅nario de test dont le nom par d茅faut                commence par la cha卯ne "test"                et quand le sc茅nario de test est appel茅 toutes les m茅thodes                de ce type sont ex茅cut茅es dans l'ordre utilis茅                par l'introspection de PHP pour les trouver.                Peuvent 锚tre ajout茅es autant de m茅thodes de test que n茅cessaires.                Par exemple...<pre>require_once('simpletest/autorun.php');require_once('../classes/writer.php');class FileTestCase extends UnitTestCase {    function FileTestCase() {        $this-&gt;UnitTestCase('File test');    }<strong>        function setUp() {        @unlink('../temp/test.txt');    }        function tearDown() {        @unlink('../temp/test.txt');    }        function testCreation() {        $writer = &amp;new FileWriter('../temp/test.txt');        $writer-&gt;write('Hello');        $this-&gt;assertTrue(file_exists('../temp/test.txt'), 'File created');    }</strong>}</pre>                Le constructeur est optionnel et souvent omis. Sans nom,                le nom de la classe est utilis茅 comme nom pour le sc茅nario de test.            </p>            <p>                Notre unique m茅thode de test pour le moment est                <span class="new_code">testCreation()</span> o霉 nous v茅rifions                qu'un fichier a bien 茅t茅 cr茅茅 par notre objet                <span class="new_code">Writer</span>. Nous pourrions avoir mis                le code <span class="new_code">unlink()</span> dans cette m茅thode,                mais en la pla莽ant dans <span class="new_code">setUp()</span>                et <span class="new_code">tearDown()</span> nous pouvons l'utiliser                pour nos autres m茅thodes de test que nous ajouterons.            </p>            <p>                La m茅thode <span class="new_code">setUp()</span> est lanc茅                juste avant chaque m茅thode de test.                <span class="new_code">tearDown()</span> est lanc茅 apr猫s chaque m茅thode de test.            </p>            <p>                Vous pouvez placer une initialisation de                sc茅nario de test dans le constructeur afin qu'elle soit lanc茅e                pour toutes les m茅thodes dans le sc茅nario de test                mais dans un tel cas vous vous exposeriez 脿 des interf茅rences.                Cette fa莽on de faire est l茅g猫rement moins rapide,                mais elle est plus s没re.                Notez que si vous arrivez avec des notions de JUnit,                il ne s'agit pas du comportement auquel vous 锚tes habitu茅s.                Bizarrement JUnit re-instancie le sc茅nario de test                pour chaque m茅thode de test pour se pr茅venir                d'une telle interf茅rence.                SimpleTest demande 脿 l'utilisateur final d'utiliser                <span class="new_code">setUp()</span>, mais fournit aux codeurs de biblioth猫que d'autres crochets.            </p>            <p>                Pour rapporter les r茅sultats de test,                le passage par une classe d'affichage - notifi茅e par                les diff茅rentes m茅thodes de type <span class="new_code">assert...()</span> -                est utilis茅e. En voici la liste compl猫te pour                la classe <span class="new_code">UnitTestCase</span>,                celle par d茅faut dans SimpleTest...            <table><tbody>                <tr><td><span class="new_code">assertTrue($x)</span></td><td>Echoue si $x est faux</td></tr>                <tr><td><span class="new_code">assertFalse($x)</span></td><td>Echoue si $x est vrai</td></tr>                <tr><td><span class="new_code">assertNull($x)</span></td><td>Echoue si $x est initialis茅</td></tr>                <tr><td><span class="new_code">assertNotNull($x)</span></td><td>Echoue si $x n'est pas initialis茅</td></tr>                <tr><td><span class="new_code">assertIsA($x, $t)</span></td><td>Echoue si $x n'est pas de la classe ou du type $t</td></tr>                <tr><td><span class="new_code">assertEqual($x, $y)</span></td><td>Echoue si $x == $y est faux</td></tr>                <tr><td><span class="new_code">assertNotEqual($x, $y)</span></td><td>Echoue si $x == $y est vrai</td></tr>                <tr><td><span class="new_code">assertIdentical($x, $y)</span></td><td>Echoue si $x === $y est faux</td></tr>                <tr><td><span class="new_code">assertNotIdentical($x, $y)</span></td><td>Echoue si $x === $y est vrai</td></tr>                <tr><td><span class="new_code">assertReference($x, $y)</span></td><td>Echoue sauf si $x et $y sont la m锚me variable</td></tr>                <tr><td><span class="new_code">assertCopy($x, $y)</span></td><td>Echoue si $x et $y sont la m锚me variable</td></tr>                <tr><td><span class="new_code">assertWantedPattern($p, $x)</span></td><td>Echoue sauf si l'expression rationnelle $p capture $x</td></tr>                <tr><td><span class="new_code">assertNoUnwantedPattern($p, $x)</span></td><td>Echoue si l'expression rationnelle $p capture $x</td></tr>                <tr><td><span class="new_code">assertNoErrors()</span></td><td>Echoue si une erreur PHP arrive</td></tr>                <tr><td><span class="new_code">assertError($x)</span></td><td>Echoue si aucune erreur ou message incorrect de PHP n'arrive</td></tr>            </tbody></table>                Toutes les m茅thodes d'assertion peuvent recevoir                une description optionnelle :                cette description sert pour 茅tiqueter le r茅sultat.                Sans elle, une message par d茅faut est envoy茅e 脿 la place :                il est g茅n茅ralement suffisant.                Ce message par d茅faut peut encore 锚tre encadr茅                dans votre propre message si vous incluez "%s"                dans la cha卯ne.                Toutes les assertions renvoient vrai / true en cas de succ猫s                et faux / false en cas d'茅chec.            </p>            <p>                D'autres exemples...<pre><strong>$variable = null;$this-&gt;assertNull($variable, 'Should be cleared');</strong></pre>                ...passera et normalement n'affichera aucun message.                Si vous avez <a href="http://www.lastcraft.com/display_subclass_tutorial.php">                configur茅 le testeur pour afficher aussi les succ猫s</a>                alors le message sera affich茅 comme tel.<pre><strong>$this-&gt;assertIdentical(0, false, 'Zero is not false [%s]');</strong></pre>                Ceci 茅chouera 茅tant donn茅 qu'il effectue une v茅rification                sur le type en plus d'une comparaison sur les deux valeurs.

⌨️ 快捷键说明

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