{"id":229995,"date":"2022-11-29T16:22:00","date_gmt":"2022-11-29T13:22:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229995"},"modified":"2022-11-29T16:35:36","modified_gmt":"2022-11-29T13:35:36","slug":"kirjutamisueksuste-testid-phpunitiga-3-osa-xml-i-konfiguratsioon","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kirjutamisueksuste-testid-phpunitiga-3-osa-xml-i-konfiguratsioon\/","title":{"rendered":"Kirjutamis\u00fcksuste testid PHPUnitiga, 3. osa: XML-i konfiguratsioon"},"content":{"rendered":"\n<p>Selle seeria varasemates postitustes olen k\u00e4sitlenud kahte j\u00e4rgmist teemat:<\/p>\n<ol>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kirjutamisueksuse-testid-phpunitiga-1-osa-seadistamine\/\" title=\"Kirjutamis\u00fcksuse testid PHPUnitiga, 1. osa: Seadistamine\">Kirjutamis\u00fcksuse testid PHPUnitiga, 1. osa: Seadistamine<\/a><strong>.<\/strong> Juhend PHPUniti testide kirjutamise alustamiseks, kasutades p\u00f5hivahem\u00e4lu ja kasutades raamistiku h\u00e4\u00e4lestusmeetodit.<\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kirjutamisosa-testid-phpunitiga-2-osa-rebimine\/\" title=\"Kirjutamisosa testid PHPUnitiga, 2. osa: Rebimine.\">Kirjutamisosa testid PHPUnitiga, 2. osa: Rebimine.<\/a> \u00d5petus selle kohta, kuidas kirjutada \u00fchikuteste, mis kasutavad \u00f5igesti PHPUniti h\u00e4\u00e4lestus- ja rebimismeetodeid.<\/li>\n<\/ol>\n<p>K\u00f5ik \u00fclaltoodud on m\u00f5eldud andma aabitsa v\u00e4ga lihtsate \u00fchikutestide kirjutamise alustamiseks. Asjad v\u00f5ivad muutuda keerulisemaks, eriti kui rakendus v\u00f5i projekt kasvab (aga see on alati t\u00f5si, eks?).<\/p>\n<p>Kuid selleks, et olla valmis selleks, on \u00fcksuse testimisel \u00fcks viimane komponent, millele peaksime minu arvates keskenduma, ja see on PHPUnit XML-i konfiguratsioonifaili m\u00f5istmine (mida olete v\u00f5ib-olla n\u00e4inud teistes projektides kui phpunit.xml).<\/p>\n<h2>PHPUnit XML konfiguratsioon<\/h2>\n<p>Nii et selles postituses seadistan lihtsa projekti, mis kasutab PHPUniti, kirjutab m\u00f5ned testid, nagu need, mida oleme juba n\u00e4inud, ja kasutab testimise automatiseerimiseks konfiguratsioonifaili.<\/p>\n<p>Lisaks teen k\u00f5ik endast oleneva, et k\u00f5ige paremini selgitada konfiguratsioonifaili vajalikke osi, et saaksite need lisada oma j\u00e4rgmisse projekti.<\/p>\n<h3>1 Failide v\u00e4ljaj\u00e4tmine<\/h3>\n<p>Enne testitava koodi kirjutamise alustamist on oluline teada failid, mida protsessi toimimiseks vaja l\u00e4heb.<\/p>\n<p>J\u00e4rgnevalt kirjeldame enam-v\u00e4hem, kuidas <strong><a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">me<\/a><\/strong> korraldame asju projekti algusest peale:<\/p>\n<ul>\n<li>testide kataloog,<\/li>\n<li>faili <strong>phpunit.xml<\/strong> _<\/li>\n<\/ul>\n<p>L\u00f5puks n\u00e4ete ka j\u00e4rgmist:<\/p>\n<ul>\n<li>failid, millest projekt koosneb,<\/li>\n<li>testid, mis kontrollivad nimetatud faile.<\/li>\n<\/ul>\n<p>Siinkohal vaatame aga XML-i konfiguratsioonifaili ja proovime seej\u00e4rel PHPUniti automaatselt ilma muude parameetriteta k\u00e4ivitada.<\/p>\n<h3>2 Konfiguratsioonifaili p\u00f5hit\u00f5ed<\/h3>\n<p>K\u00f5igepealt vaatame <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ae5a6b3afb7afebf200670a923f30ea#file-00-phpunit-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00f5hikonfiguratsioonifaili:<\/a><\/strong><\/p>\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n\n&lt;!-- http:\/\/phpunit.de\/manual\/4.1\/en\/appendixes.configuration.html --&gt;\n&lt;phpunit xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n         xsi:noNamespaceSchemaLocation=\"http:\/\/schema.phpunit.de\/4.1\/phpunit.xsd\"\n         bootstrap=\".\/tests\/bootstrap.php\"\n         backupGlobals=\"false\"\n         colors=\"true\"\n         convertErrorsToExceptions=\"true\"\n         convertNoticesToExceptions=\"true\"\n         convertWarningsToExceptions=\"true\"\n&gt;\n  &lt;testsuites&gt;\n    &lt;testsuite name=\"AcmeTests\"&gt;\n      &lt;directory&gt;.\/tests&lt;\/directory&gt;\n    &lt;\/testsuite&gt;\n  &lt;\/testsuites&gt;\n\n  &lt;logging&gt;\n    &lt;log type=\"coverage-text\" target=\"php:\/\/stdout\" showUncoveredFiles=\"true\"&gt;&lt;\/log&gt;\n  &lt;\/logging&gt;\n&lt;\/phpunit&gt;\n<\/code><\/pre>\n<p>N\u00fc\u00fcd m\u00f5istame, mida me t\u00e4pselt vaatame (peale lihtsa XML-i).<\/p>\n<ul>\n<li><strong>phpunit<\/strong>. Vanems\u00f5lm teeb XML-faili skeemi m\u00e4\u00e4ratlemisel tavap\u00e4rast t\u00f6\u00f6d, kuid on veel m\u00f5ned komponendid, mis puudutavad meid:\n<ul>\n<li><strong>backupGlobals.<\/strong> See on tegelikult seotud m\u00e4rkusega, mille saame oma l\u00e4htekoodi teha. Globaalseid v\u00e4\u00e4rtusi peaksime p\u00fc\u00fcdma objektorienteeritud programmeerimisel v\u00e4ltida, kuid kui otsustate kasutada \u00fchte v\u00f5i peate seda kasutama, k\u00e4sib see PHPUnitil k\u00e4sitleda v\u00e4\u00e4rtusi, mida globaalsed muutujad s\u00e4ilitavad (ja annab teile v\u00f5imaluse taastada neid). \u00dcldiselt j\u00e4tan selle nii nagu on.<\/li>\n<li><strong>bootstrap.<\/strong> See on valikuline, kuid kui otsustate oma testidesse kaasata ka muid faile (nt pilkava teegi, WordPressi osa v\u00f5i kolmanda osapoole teegi toomine), siis on see k\u00f5ik, mida saate m\u00e4\u00e4rata skripti asukoha, mis vajab hukata. WordPressi m\u00f5nitamine ja toomine ei kuulu selle postituse ulatusse, kuid t\u00f5en\u00e4oliselt vaatame seda tulevikus, kuna see on pistikprogrammide testimisel kasulik. Praegu lisan lihtsa automaatlaaduri, mis p\u00f5him\u00f5tteliselt lisab k\u00f5ik failid projekti kataloogi juurtesse. Selle t\u00e4ielikku allikat jagatakse hiljem selles postituses.<\/li>\n<li><strong>v\u00e4rvid.<\/strong> Kui soovite, et konsool prindiks teie testide aruande v\u00e4lja ja kasutaks seda v\u00e4rvide abil (hoiatuste, m\u00e4rkuste, vigade jms h\u00f5lpsamaks tuvastamiseks), m\u00e4\u00e4rake see v\u00e4\u00e4rtuseks T\u00f5ene.<\/li>\n<li>K\u00f5ik j\u00e4rgmised on t\u00f5ev\u00e4\u00e4rtused. Soovitan m\u00e4\u00e4rata need <strong>t\u00f5eseks<\/strong>, et saada v\u00f5imalikult agressiivseid aruandeid. Nii ei p\u00e4\u00e4se te lihtsalt m\u00e4rguannetest v\u00f5i hoiatustest l\u00e4bi, muretsedes ainult vigade p\u00e4rast. See on pigem koodikvaliteedi harjutus kui miski muu.\n<ul>\n<li><strong>convertErrorsToExceptions<\/strong><\/li>\n<li><strong>convertNoticesToExceptions<\/strong><\/li>\n<li><strong>teisendada hoiatused eranditeks<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>testikomplektid<\/strong> koosnevad testide kogumitest. Kuna antud projektil v\u00f5ib olla mitu testi, on oluline veenduda, et annate igale komplektile kordumatu nime ja viidate testide r\u00fchma \u00f5igele teele. Meie n\u00e4ites on meil ainult \u00fcks testkomplekt ja see asub <strong>testide<\/strong> kataloogis.<\/li>\n<li><strong>logimine<\/strong> on funktsioon, mis v\u00f5ib olla nii lihtne kui andmete v\u00e4ljatr\u00fckkimine konsooli v\u00f5i kolmanda osapoole teegi (nt <strong><a href=\"https:\/\/confluence.atlassian.com\/clover\/clover-documentation-home-71598318.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Clover<\/a><\/strong>) kasutamine aruannete genereerimiseks, mis aitavad pidevat integreerimist. Kuna ma pole viimast \u00fcheski oma varasemas postituses veel arutanud, j\u00e4\u00e4me oma peamise v\u00e4ljundmeetodina konsooli juurde. Seega on meie ainus logiv\u00e4ljund php <strong>:\/\/stdout .<\/strong><\/li>\n<\/ul>\n<p>K\u00f5ike seda arvesse v\u00f5ttes on meie XML-failil k\u00f5ik, mida PHPUnit vajab ilma muude parameetriteta.<\/p>\n<p>Pidage siiski meeles, et ma eeldan, et olete enne selle artikli \u00fclej\u00e4\u00e4nud osaga j\u00e4tkamist oma s\u00fcsteemi PHPUniti globaalselt installinud, kasutades Composerit. Kui ei, siis vaadake <strong><a href=\"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-helilooja-1-osa\/\" title=\"see artikkel\">see artikkel<\/a><\/strong> \u00fcle, sest see annab teile juhiseid selle kohta.<\/p>\n<p>Kui see on tehtud, saate kontrollida, kas PHPUnit on installitud, sisestades terminali j\u00e4rgmise k\u00e4su:<\/p>\n<pre><code>$ which phpunit<\/code><\/pre>\n<p>Ja te peaksite n\u00e4gema midagi sellist:<\/p>\n<\/p>\n<p>Kui n\u00e4ete midagi \u00fclaltoodut, saate PHPUniti k\u00e4ivitada k\u00f5ikjal oma s\u00fcsteemist.<\/p>\n<h3>3 Bootstrap fail<\/h3>\n<p>Enne kui l\u00e4heme edasi, kirjutame alglaadimisfaili. Nimetame selle <strong>nimeks bootstrap.php<\/strong> ja viskame selle oma <strong>testide<\/strong> kataloogi. See sisaldab <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ae5a6b3afb7afebf200670a923f30ea#file-01-bootstrap-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmist:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\/\/ This array has a single file but could whole the contents of an entire directory.\n$files = [\n    dirname(__DIR__).'\/AcmeCache.php',\n];\n\nforeach ($files as $file) {\n    if (file_exists($file)) {\n        require_once $file;\n    }\n}\n<\/code><\/pre>\n<p>See on lihtne &quot;automaatne laadija&quot; (mida ma k\u00f5hklevalt nii nimetan, kuna see lihtsalt kordab faile ja n\u00f5uab neid, kuid see t\u00f6\u00f6tab meie eesm\u00e4rkidel).<\/p>\n<p>Siinkohal paneme paika p\u00f5hitesti.<\/p>\n<h3>4 Eba\u00f5nnestunud p\u00f5hitest<\/h3>\n<p>Kui loete midagi testip\u00f5hise arenduse kohta, kuulete t\u00f5en\u00e4oliselt punase-rohelise korduva ts\u00fckli kohta. Selle kohta on palju \u00f6elda ja ma soovitan <strong><a href=\"http:\/\/blog.cleancoder.com\/uncle-bob\/2014\/12\/17\/TheCyclesOfTDD.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selle kohta lugeda<\/a><\/strong>, kuid see pole selle postituse eesm\u00e4rk.<\/p>\n<p>Selle asemel oleme rohkem keskendunud testide kirjutamisele, mis vastavad sellele, mida me peame tegema, eks? Kui see \u00f6eldud, teeme j\u00e4rgmist.<\/p>\n<ol>\n<li>looge kataloog, millest leiate m\u00f5ned p\u00f5hilised PHP-failid, mida me testime,<\/li>\n<li>kataloogi juurtes looge ka <strong>phpunit.xml<\/strong> ja sisestage see selles postituses varem jagatud koodi abil<\/li>\n<li>looge <strong>testide<\/strong> kataloog, kuhu paigutame oma testid.<\/li>\n<\/ol>\n<p>N\u00fc\u00fcd muutke terminalist kataloog projekti kataloogiks (mis praegu k\u00fcll puudub) ja seej\u00e4rel k\u00e4ivitage lihtsalt <strong>php<em><\/em><\/strong> unit<em><\/em>:<\/p>\n<pre><code>$ phpunit<\/code><\/pre>\n<p>Eeldades, et k\u00f5ik on \u00f5igesti seadistatud, peaksite n\u00e4gema midagi sellist:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e7588ea742f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e7588ea742f.png\" alt=\"Kirjutamis\u00fcksuste testid PHPUnitiga, 3. osa: XML-i konfiguratsioon\"><\/a><\/p>\n<p>Kuna meil pole koodi ega teste, n\u00e4eme loomulikult \u00fclaltoodud v\u00e4ljundit, eks? Nii et kirjutame \u00fche testi, mis k\u00e4ivitatakse (ja eba\u00f5nnestub), kuna selle testimiseks pole tegelikult koodi.<\/p>\n<p>Esiteks looge <strong>testide<\/strong> kataloogis fail nimega <strong>AcmeCacheTest.php.<\/strong> Ja laske sellel teha midagi lihtsat, n\u00e4iteks <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ae5a6b3afb7afebf200670a923f30ea#file-03-failing-test-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">luua vahem\u00e4luobjekt<\/a><\/strong>, mille me l\u00f5puks loome.<\/p>\n<pre><code>&lt;?php\n\nnamespace AcmeTests;\n\nuse PHPUnitFrameworkTestCase;\nuse AcmeAcmeCache;\n\nclass AcmeCacheTest extends TestCase\n{\n    private $cache;\n\n    public function setUp()\n    {\n        $this-&gt;cache = new AcmeCache();\n    }\n\n    public function testCacheExists()\n    {\n        $this-&gt;assertNotNull($this-&gt;cache);\n    }\n}\n<\/code><\/pre>\n<p>Enne testi k\u00e4ivitamist pange t\u00e4hele, et:<\/p>\n<ol>\n<li>Kasutage kindlasti <strong>PHPUnitFrameworkTestCase&#8217;i<\/strong><\/li>\n<li>Ja laske meie klassil <strong>TestCase&#8217;i laiendada<\/strong><\/li>\n<\/ol>\n<p>See on osa sellest, mis teeb PHPUniti kasutamise nii lihtsaks. Kui see on tehtud, k\u00e4ivitage oma projekti juurtest j\u00e4rgmine kood:<\/p>\n<pre><code>$ phpunit<\/code><\/pre>\n<p>P\u00e4rast seda peaksite n\u00e4gema j\u00e4rgmist.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e75891b9ec8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e75891b9ec8.png\" alt=\"Kirjutamis\u00fcksuste testid PHPUnitiga, 3. osa: XML-i konfiguratsioon\"><\/a><\/p>\n<p>Pange t\u00e4hele, et see annab eba\u00f5nnestunud testi ja \u00fctleb teile, <strong>kust<\/strong> probleem leiti, faili ja rea.<\/p>\n<p>Selle parandamiseks <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ae5a6b3afb7afebf200670a923f30ea#file-04-acme-cache-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">peame kirjutama klassi:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nnamespace Acme;\n\nclass AcmeCache\n{\n    private $duration;\n\n    public function __construct()\n    {\n        $this-&gt;duration = 43200;\n    }\n\n    public function setDuration(int $duration)\n    {\n        $this-&gt;duration = $duration;\n    }\n\n    public function getDuration(): int\n    {\n        return $this-&gt;duration;\n    }\n}\n<\/code><\/pre>\n<h3>4 M\u00f5ned p\u00f5hilised testid<\/h3>\n<p>P\u00f5hiline l\u00e4bimise test (mis p\u00f5hineb eelmisel koodil) sisaldab j\u00e4rgmist:<\/p>\n<ul>\n<li>nimeruumiga fail,<\/li>\n<li>esindab lihtsat vahem\u00e4lu,<\/li>\n<li>PHPUnit laadib selle automaatselt, kasutades \u00fclal jagatud faili <strong>bootstrap.php<\/strong><\/li>\n<li>ja selle konstruktoris on m\u00e4\u00e4ratud kestus koos v\u00e4\u00e4rtuse m\u00e4\u00e4raja ja getteriga<\/li>\n<\/ul>\n<p>K\u00f5igepealt testime, kas suudame klassi seadistada ja et see pole null. See on pisut tarbetu v\u00e4ide, kuna me teame, et meil on klass \u00f5igesti instantseeritud, kuid see viib meid <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ae5a6b3afb7afebf200670a923f30ea#file-03-failing-test-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">testide kirjutamise keerisesse:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nnamespace AcmeTests;\n\nuse PHPUnitFrameworkTestCase;\nuse AcmeAcmeCache;\n\nclass AcmeCacheTest extends TestCase\n{\n    private $cache;\n\n    public function setUp()\n    {\n        $this-&gt;cache = new AcmeCache();\n    }\n\n    public function testCacheExists()\n    {\n        $this-&gt;assertNotNull($this-&gt;cache);\n    }\n}\n<\/code><\/pre>\n<p>Ja k\u00e4ivitage test:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e75894bbad2.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e75894bbad2.png\" alt=\"Kirjutamis\u00fcksuste testid PHPUnitiga, 3. osa: XML-i konfiguratsioon\"><\/a><\/p>\n<p>J\u00e4rgmisena kontrollime, kas vahem\u00e4lu vaikev\u00e4\u00e4rtus <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ae5a6b3afb7afebf200670a923f30ea#file-05-test-2-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">on m\u00e4\u00e4ratud:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nnamespace AcmeTests;\n\nuse PHPUnitFrameworkTestCase;\nuse AcmeAcmeCache;\n\nclass AcmeCacheTest extends TestCase\n{\n    private $cache;\n\n    public function setUp()\n    {\n        $this-&gt;cache = new AcmeCache();\n    }\n\n    public function testCacheExists()\n    {\n        $this-&gt;assertNotNull($this-&gt;cache);\n    }\n\n    public function testDefaultCacheValue()\n    {\n        $this-&gt;assertSame(43200, $this-&gt;cache-&gt;getDuration());\n    }\n}\n<\/code><\/pre>\n<p>Nagu eelmises etapis, k\u00e4ivitage testid ja n\u00fc\u00fcd peaksite n\u00e4gema kahte l\u00e4bivat testi:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e7589770dbe.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e7589770dbe.png\" alt=\"Kirjutamis\u00fcksuste testid PHPUnitiga, 3. osa: XML-i konfiguratsioon\"><\/a><\/p>\n<p>L\u00f5puks testime, kas suudame <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/2ae5a6b3afb7afebf200670a923f30ea#file-05-test-3-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">v\u00e4\u00e4rtust edukalt muuta:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nnamespace AcmeTests;\n\nuse PHPUnitFrameworkTestCase;\nuse AcmeAcmeCache;\n\nclass AcmeCacheTest extends TestCase\n{\n    private $cache;\n\n    public function setUp()\n    {\n        $this-&gt;cache = new AcmeCache();\n    }\n\n    public function testCacheExists()\n    {\n        $this-&gt;assertNotNull($this-&gt;cache);\n    }\n\n    public function testDefaultCacheValue()\n    {\n        $this-&gt;assertSame(43200, $this-&gt;cache-&gt;getDuration());\n    }\n\n    public function testSetCustomDuration()\n    {\n        $duration = 4200;\n\n        $this-&gt;cache-&gt;setDuration($duration);\n        $this-&gt;assertSame($duration, $this-&gt;cache-&gt;getDuration());\n    }\n}\n<\/code><\/pre>\n<p>Ja kolm viimast l\u00e4bitud testi:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e7589a7745a.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163700-61e7589a7745a.png\" alt=\"Kirjutamis\u00fcksuste testid PHPUnitiga, 3. osa: XML-i konfiguratsioon\"><\/a><\/p>\n<p>Ja seal see on:<\/p>\n<ol>\n<li>PHPUnit XML-fail,<\/li>\n<li>lihtne bootstrap,<\/li>\n<li>\u00fcks, nimeruumiga klass,<\/li>\n<li>\u00fchikutestid klassi iga meetodi jaoks<\/li>\n<\/ol>\n<p>T\u00f5si, see on lihtne, kuid see loob p\u00f5hialused palju enamaks kui see, mida paljud inimesed oma testidega juba teevad.<\/p>\n<p>Lisaks annab see teile midagi, millele tugineda, kui teie testitavad kotletid muutuvad tugevamaks.<\/p>\n<h2>Kas on veel? (Alati \u00f5igus?)<\/h2>\n<p>L\u00f5puks, kui soovite t\u00f5esti konfiguratsioonifaili sukelduda, v\u00f5ite lugeda juhendi <strong><a href=\"https:\/\/phpunit.de\/manual\/6.5\/en\/appendixes.configuration.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00f5hjalikku<\/a><\/strong> selgitust selle kohta.<\/p>\n<p>Pange t\u00e4hele, et k\u00f5ik \u00fclalkirjeldatu eesm\u00e4rk on olla see, mida vajate oma PHPUnit XML-i konfiguratsioonifaili seadistamise alustamiseks.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>P\u00f5hijuhend PHPUnit XML-i konfiguratsioonifaili m\u00f5istmiseks ja selle sidumiseks lihtsama \u00fcksuse testimisega.<\/p>\n","protected":false},"author":1,"featured_media":163701,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,842,802],"tags":[1165],"class_list":["post-229995","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-opetused","category-php-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=229995"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229995\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/163701"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}