Rozdělení testů na rychlé/pomalé, resp. jednotkové/integrační?

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

Ahoj. Objevily se nám nějaké testy, které např. komunikují s cizím serverem a ověřují data, která k nám chodí. Je správné, mít takové testy mezi jednotkovými? Ono to netestuje ani tak naší jednotku, jako spíš integritu dat. S tím souvisí, že test je malinko pomalejší a přemýšleli jsme, že bychom ho nějak prioritizovali – teda označili jako pomalý – a spouštěli ho jen na vyžádání a ne před každým commitem.

Nebo je lepší podobné testy mít vyčleněné v extra adresáři a spouštět jen na CI serveru?

Milo
Nette Core | 1283
+
+7
-

Selektivní spouštění testů se dá s Testerem vyřešit několika způsoby:

  1. Testy se rozdělí do adresářů a spouští se jen vybrané adresáře. Hodí se pro testování namespaces.
  2. Pro vybrané testy se zvolí jiná přípona a spustí se jen na vyžádání. To je trochu extrém.
  3. Tester zachovává proměnné prostředí. Nastaví se proměnná prostředí a podle ní se řídí spouštění. Například:
TESTS_RUNLEVEL=10 vendor/bin/tester tests
<?php

if ((int) getenv('TESTS_RUNLEVEL') < 5) {
	Tester\Environment::skip("Required runlevel 5.");
}

Proměnnou prostředí lze nastavit také ze setup skriptu vendor/bin/tester --setup setup.php.

Milanov
Člen | 51
+
0
-

Díky, určitě vyzkouším.