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><?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 {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?