reporter_documentation.html.svn-base

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

SVN-BASE
535
字号
                Afin de construire une liste de tests possibles,                ils ont besoin d'un rapport sur la structure du test                pour l'affichage, par exemple, d'une vue en arbre                de la suite de test. Avec un rapporteur lanc茅                sur une ex茅cution s猫che qui ne renverrait                que les 茅v猫nements d'affichage, cela devient                facilement r茅alisable.            </p>                <p><a class="target" name="autre"><h2>Etendre le rapporteur</h2></a></p>            <p>                Plut么t que de modifier l'affichage existant,                vous voudrez peut-锚tre produire une pr茅sentation HTML                compl猫tement diff茅rente, ou m锚me g茅n茅rer une version texte ou XML.                Plut么t que de surcharger chaque m茅thode dans                 <span class="new_code">HtmlReporter</span> nous pouvons nous rendre                une 茅tape plus haut dans la hi茅rarchie de classe vers                <span class="new_code">SimpleReporter</span> dans le fichier source <em>simple_test.php</em>.            </p>            <p>                Un affichage sans rien, un canevas vierge                pour votre propre cr茅ation, serait...<pre><strong>require_once('simpletest/simple_test.php');</strong>class MyDisplay extends SimpleReporter {<strong>    </strong>    function paintHeader($test_name) {    }        function paintFooter($test_name) {    }        function paintStart($test_name, $size) {<strong>        parent::paintStart($test_name, $size);</strong>    }        function paintEnd($test_name, $size) {<strong>        parent::paintEnd($test_name, $size);</strong>    }        function paintPass($message) {<strong>        parent::paintPass($message);</strong>    }        function paintFail($message) {<strong>        parent::paintFail($message);</strong>    }}</pre>                Aucune sortie ne viendrait de cette classe jusqu'脿 un ajout de votre part.            </p>                <p><a class="target" name="cli"><h2>Le rapporteur en ligne de commande</h2></a></p>            <p>                SimpleTest est aussi livr茅 avec un rapporteur                en ligne de commande, minime lui aussi.                L'interface imite celle de JUnit,                sauf qu'elle envoie les messages d'erreur au fur                et 脿 mesure de leur arriv茅e.                Pour utiliser le rapporteur en ligne de commande,                il suffit de l'intervertir avec celui de la version HTML...<pre>&lt;?phprequire_once('simpletest/unit_tester.php');require_once('simpletest/reporter.php');$test = &amp;new GroupTest('File test');$test-&gt;addTestFile('tests/file_test.php');$test-&gt;run(<strong>new TextReporter()</strong>);?&gt;</pre>                Et ensuite d'invoquer la suite de test 脿 partir d'une ligne de commande...<pre class="shell">php file_test.php</pre>                Bien s没r vous aurez besoin d'installer PHP                en ligne de commande. Une suite de test qui                passerait toutes ses assertions ressemble 脿...<pre class="shell">File testOKTest cases run: 1/1, Failures: 0, Exceptions: 0</pre>                Un 茅chec d茅clenche un affichage comme...<pre class="shell">File test1) True assertion failed.    in createnewfileFAILURES!!!Test cases run: 1/1, Failures: 1, Exceptions: 0</pre>            </p>            <p>                Une des principales raisons pour utiliser                une suite de test en ligne de commande tient                dans l'utilisation possible du testeur avec                un processus automatis茅. Pour fonctionner comme                il faut dans des scripts shell le script de test                devrait renvoyer un code de sortie non-nul suite 脿 un 茅chec.                Si une suite de test 茅choue la valeur <span class="new_code">false</span>                est renvoy茅e par la m茅thode <span class="new_code">SimpleTest::run()</span>.                Nous pouvons utiliser ce r茅sultat pour terminer le script                avec la bonne valeur renvoy茅e...<pre>&lt;?phprequire_once('simpletest/unit_tester.php');require_once('simpletest/reporter.php');$test = &amp;new GroupTest('File test');$test-&gt;addTestFile('tests/file_test.php');<strong>exit ($test-&gt;run(new TextReporter()) ? 0 : 1);</strong>?&gt;</pre>                Bien s没r l'objectif n'est pas de cr茅er deux scripts de test,                l'un en ligne de commande et l'autre pour un navigateur web,                pour chaque suite de test.                Le rapporteur en ligne de commande inclut                une m茅thode pour d茅terminer l'environnement d'ex茅cution...<pre>&lt;?phprequire_once('simpletest/unit_tester.php');require_once('simpletest/reporter.php');$test = &amp;new GroupTest('File test');$test-&gt;addTestFile('tests/file_test.php');<strong>if (TextReporter::inCli()) {</strong>    exit ($test-&gt;run(new TextReporter()) ? 0 : 1);<strong>}</strong>$test-&gt;run(new HtmlReporter());?&gt;</pre>                Il s'agit l脿 de la forme utilis茅e par SimpleTest lui-m锚me.            </p>                <p><a class="target" name="xml"><h2>Test distant</h2></a></p>            <p>                SimpleTest est livr茅 avec une classe <span class="new_code">XmlReporter</span>                utilis茅e pour de la communication interne.                Lors de son ex茅cution, le r茅sultat ressemble 脿...<pre class="shell">&lt;?xml version="1.0"?&gt;&lt;run&gt;  &lt;group size="4"&gt;    &lt;name&gt;Remote tests&lt;/name&gt;    &lt;group size="4"&gt;      &lt;name&gt;Visual test with 48 passes, 48 fails and 4 exceptions&lt;/name&gt;      &lt;case&gt;        &lt;name&gt;testofunittestcaseoutput&lt;/name&gt;        &lt;test&gt;          &lt;name&gt;testofresults&lt;/name&gt;          &lt;pass&gt;This assertion passed&lt;/pass&gt;          &lt;fail&gt;This assertion failed&lt;/fail&gt;        &lt;/test&gt;        &lt;test&gt;          ...        &lt;/test&gt;      &lt;/case&gt;    &lt;/group&gt;  &lt;/group&gt;&lt;/run&gt;</pre>                Vous pouvez utiliser ce format avec le parseur                fourni dans SimpleTest lui-m锚me.                Il s'agit de <span class="new_code">SimpleTestXmlParser</span>                et se trouve <em>xml.php</em> 脿 l'int茅rieur du paquet SimpleTest...<pre>&lt;?phprequire_once('simpletest/xml.php');...$parser = &amp;new SimpleTestXmlParser(new HtmlReporter());$parser-&gt;parse($test_output);?&gt;</pre>                <span class="new_code">$test_output</span> devrait 锚tre au format XML,                脿 partir du rapporteur XML, et pourrait venir                d'une ex茅cution en ligne de commande d'un sc茅nario de test.                Le parseur envoie des 茅v猫nements au rapporteur exactement                comme tout autre ex茅cution de test.                Il y a des occasions bizarres dans lesquelles c'est en fait tr猫s utile.            </p>            <p>                Un probl猫me des tr猫s grandes suites de test,                c'est qu'elles peuvent venir 脿 bout de la limite de m茅moire                par d茅faut d'un process PHP - 8Mb.                En pla莽ant la sortie des groupes de test dans du XML                et leur ex茅cution dans des process diff茅rents,                le r茅sultat peut 锚tre pars茅 脿 nouveau pour agr茅ger                les r茅sultats avec moins d'impact sur le test au premier niveau.            </p>            <p>                Parce que la sortie XML peut venir de n'importe o霉,                莽a ouvre des possibilit茅s d'agr茅gation d'ex茅cutions de test                depuis des serveur distants.                Un sc茅nario de test pour le r茅aliser existe d茅j脿                脿 l'int茅rieur du framework SimpleTest, mais il est encore exp茅rimental...<pre>&lt;?php<strong>require_once('../remote.php');</strong>require_once('../reporter.php');$test_url = ...;$dry_url = ...;$test = &amp;new GroupTest('Remote tests');$test-&gt;addTestCase(<strong>new RemoteTestCase($test_url, $dry_url)</strong>);$test-&gt;run(new HtmlReporter());?&gt;</pre>                <span class="new_code">RemoteTestCase</span> prend la localisation r茅elle                du lanceur de test, tout simplement un page web au format XML.                Il prend aussi l'URL d'un rapporteur initi茅                pour effectuer une ex茅cution s猫che.                Cette technique est employ茅e pour que les progr猫s                soient correctement rapport茅s vers le haut.                <span class="new_code">RemoteTestCase</span> peut 锚tre ajout茅 脿                une suite de test comme n'importe quel autre groupe de tests.            </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><li>            L'<a href="http://simpletest.org/api/">API pour d茅veloppeur de SimpleTest</a>            donne tous les d茅tails sur les classes et les assertions disponibles.        </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>

⌨️ 快捷键说明

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