Nette\Tester: jak začít testovat?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
hAssassin
Člen | 293
+
0
-

Ahoj, začínám si hrát s testováním a s Nette\Testerem a je to v celku zajímavá věc, která se mi podařila nějak rozjet a nějak funguje, ale jen občas. Mám např problémy s databází (rád bych si vytvořil pro každý test testovací DB do který nalil data, nad nimi provedl testy a db pak zase dropnul, což sice funguje, ale pokud mám různý create SQLka pro různý testy, tak se nějak bije), s vytvořením kontejneru pro testování extenzí (s tím aby se mi načítaly testovací konfigy), apod.

Co sem koukal do zdrojáků testu pro Nette a do pár věcí v Kdyby, tak se to hodně liší a je v tom docela hokej a doku je celkem stručná. Nejsou někde nějaký lepší materiály? Taky hledám záznam z přednášky o Nette\Testeru od HosipLana z poslední soboty, ale našel jsem jen slajdy, předpokládám že video asi bohužel není?

Díky za nějaký info.

llook
Člen | 407
+
0
-

Tester pouští více testů najednou, takže pokud používají databázi, máš dvě možnosti:

  • Testy serializovat (jde to nějakou anotací, teď z hlavy nevím), aby ty testy neběžely zároveň.
  • Nebo pro každý test vytvářet unikátní databázi.

Druhou možnost používám já. Sice v PHPUnit, ale v Testeru to bude dost podobné. Vypadá to nějak takto: https://github.com/…TestCase.php#L45

Zkrátka v cyklu zkusím vytvořit databázi prefix_1, pokud už existuje, zkusím prefix_2 atd., až když se podaří databázi vytvořit a nastavit, tak z cyklu vyskočím.

Čas od času testy failnou takovým způsobem, že neproběhne tearDown, takže jednou za čas to chce dropnout ty databáze, které po takových failech zůstaly.

hAssassin
Člen | 293
+
0
-

diky za info,
ano o serializaci se pokousim, je na to Tester\Helpers::lock() nebo tak neco a lock soubor to skutecne vytvari ale asi to stejne moc nefunguje.

Takze je mozny mit nekolik bootstrapu, napr pro kazdou cast aplikaci jeden, a pak podle potreby nacitat boostrapy pro dany test/testcase.

A to je dalsi vec, co se ma pouzivat? Obyc PHP nebo tridu TestCase? Ta trida se mi libi vic, ale je tam pak hodne zavislosti a ty se mi ne vzdy predavaji.

Jirda
Člen | 103
+
0
-

hAssassin napsal(a):

diky za info,
ano o serializaci se pokousim, je na to Tester\Helpers::lock() nebo tak neco a lock soubor to skutecne vytvari ale asi to stejne moc nefunguje.

Takze je mozny mit nekolik bootstrapu, napr pro kazdou cast aplikaci jeden, a pak podle potreby nacitat boostrapy pro dany test/testcase.

A to je dalsi vec, co se ma pouzivat? Obyc PHP nebo tridu TestCase? Ta trida se mi libi vic, ale je tam pak hodne zavislosti a ty se mi ne vzdy predavaji.

Ja pouzivam ten lock a funguje to podle me dobre. Testuju sice jen na jedne databazi, kterou vzdycky nastavim na nejaky pocatecni stav na zacatku testu, ale ten lock to resi dobre.

Jinak tady je treba hezka ukazka inicializace https://forum.nette.org/…ace-databaze od Filipa Prochazky nebo se podivej do testu LeanMapperu, ktery ma testy v nette/tester https://github.com/…evelop/tests

hAssassin
Člen | 293
+
0
-

Jirda > ano, ten lock pouzivam, ale asi blbe. Kazdopadne lock soubor se vytvori na spravnem miste, akorat me tak napada, neni potreba ho zase smazat? Nebo se to deje automaticky? Vychazim ze starsich HosipLanovych testu, kde to zamyka a odemyka rucne sam. Ale Helpers zadnou unlock metodu nemaji.

A jeste me napadlo, jak docilit toho aby se mi spravne nacitaly tridy (hlavne ty moje) bez nutnosti vytvaret container v bootstrapu? Rad bych mel pro kazdou sadu testu vlastni container i configurator, ktery bych si vytvoril az v danem TestCasu. Rucne vytvorit pouze Autoloader? Nepouzivam totiz Composer a tady mi to taky trochu zlobi :(

Editoval hAssassin (13. 7. 2013 20:04)

zool
Člen | 144
+
0
-

Ahojte chtěl jsem se zeptat, stáhl jsem si nejnovejší nette a k tomu tester, když to zpustím, tak mi to hned napíše chybu

-- FAILED: test\tests\ExampleTest.phpt
   Exited with error code 255 (expected 0)

   Fatal error: Call to undefined function Nette\Utils\mb_convert_encoding() in
D:\xampp1\htdocs\test\vendor\nette\nette\Nette\Utils\Strings.php on line 53


FAILURES! (1 tests, 1 failures, 0.0 seconds)

Nevíte někdo jak to opravit?
Děkuji

VladimirHans
Člen | 12
+
0
-

Ahoj,
na linuxu se podívej, jestli máš v php podporu mbstring (bývá to balíček php-mbstring). V případě Windows už by tam mohl být zakompilovaný v php. Přidej řádek do php.ini extension=mbstring.so popř. extension=mbstring.dll. Pak je důležité spouštět tester s explicitním zadáním php.ini:
php /cesta/k/tester.php -c /cesta/k/php.ini /cesta/k/souborum/s/testy

zool
Člen | 144
+
0
-

Děkuji už mi to testuje