Připrava databáze před testy

kminekmatej
Generous Backer | 34
+
0
-

Zdravím,
jsem přesvědčen že tento problém řeší prakticky každý kdo testoval aplikaci s mysql, ale nenašel jsem to tu:

Jakym způsobem lze inicializovat databázi před spuštěním jakéhokoliv testu?

Mám N testů, každý z nich pracuje s databází. Já chci předtím než se vůbec spustí jakýkoliv test, provést určité operace nad databází (záznam posledních ID, konkrétně). Po proběhnutí všech testů (i failnutých) spustit nějakou další funkci (smazání balastu). Takový garbage collector.

Co jsem zkoušel:
(Mějme třídu která se o to stará Preparator, obsahuje funkce prepare(), rollback().)

Environment::lock(…) – tímto mohu zamknout všechny testy a zamknout tak i ten preparator (když by to byl jakoby test). Nicméně nemám žádnou garanci že to bude právě ten preparator který se k tomu lockfilu dostane jako první.

setUp() a tearDown() metody a v nich spouštět transakce a rollbacky. – nelze, v aplikaci používám vlastní transakce

Pouštět příkazem *.sh a v příkazu před a po spuštění testeru provést potřebné – možné řešení, ale taková trochu prasárna :-P

chemix
Nette Core | 1296
+
0
-

Tusim ze asi chces mango tester a aby kazdy test mel vlastni db v init stavu pomoci migraci

Viz: https://github.com/…g/tests.neon

h4kuna
Backer | 740
+
0
-

@kminekmatej
Tady o tom taky byla diskuse, kde je popsáno jak se to řeší v čsfd