Jednotlivé testy z TestCase v konzoli zvlášť
- fidLi
- Člen | 41
Zdary,
Mám dva TestCase a jeden soubor tests.phpt který spouštím v CLI takto:
„vendor/bin/tester.bat tests/tests.phpt“
Testů mám celkem 6. Konzole však píše „OK (1 tests, …)“
Testy proběhnou však všechny, existuje nějaký přepínač, který zaznamená průběh jednotlivých testů, tedy v tomto případě by vypsal 6? Nebo je moje koncepce unit testů špatná a je nějaká, která by problém vyřešila?
tests.phpt
<?php
$container = require 'bootstrap.php';
require 'BasePresenterTest.php';
require 'UserManagerTest.php';
$userManagerTest = new UserManagerTest; //TestCase
$basePresenterTest = new BasePresenterTest; //TestCase
$basePresenterTest->run();
$userManagerTest->run();
?>
- Filip Klimeš
- Nette Blogger | 156
Nemusíš vůbec pouštět testy v jednom .phpt, místo toho volej jen
vendor/bin/tester.bat tests/
a tester si už všechny .phpt soubory ve složce tests/ najde sám.
Nezapomeň si teď requirovat bootstrap a spouštět testy v každém souboru zlášť. Tedy např.
$container = require 'bootstrap.php';
/**
* @testCase <-- tohle ti bude každou metodu test*() pouštět paralelně a počítat jí jako samostatný test case
*/
class UserManagerTest extends TestCase { ... }
(new UserManagerTest())->run();
Editoval Filip Klimeš (20. 3. 2015 20:54)
- Filip Procházka
- Moderator | 4668
Správě by docblock s annotací @testCase
měl být na
úplném začátku souboru.
<?php
/**
* @testCase
*/
require __DIR__ . '/../bootstrap.php';
class UserManagerTest extends TestCase
{
public function testFunction()
{
// ..
}
// ..
}
(new UserManagerTest())->run();
Když potom chceš pustit všechny testy, atk voláš
vendor/bin/tester tests/
když chceš jenom jeden testcase, tak to můžeš udělat přímo nebo přes
runner (s tím že runner je pustí paralelně, pokud soubor obsahuje
@testCase
annotaci)
vendor/bin/tester tests/UserManagerTest.phpt
// nebo
php tests/UserManagerTest.phpt
a když chceš pustit jenom jeden test, tak je možné zavolat
php tests/UserManagerTest.phpt testFunction
Funguje to protože Tester\TestCase
čte v
->run()
cli argumenty a pokud mu pošleš název (celý název)
metody, tak pustí jenom tu jednu metodu.
- Honza Kuchař
- Člen | 1662
Taky jsem se na @testCase nachytal, když jsem si s Testerem hrál poprvé. V dokumentaci je to hodně zašoupnuté.