tester nevykonání testů při použití TestCase

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

Při pokusu o implementaci testu mi docházi k problémům.

Pokud mám testy napsané podobné tomuto: https://tester.nette.org/cs/#… bez třídy a užití TestCase a daný test pouštím pomocí: php cesta_k_souboru_testu, tak test se vykoná správně.

Při pokusu o spuštění pomoci vendor\bin\tester.bat tests/app se vypíše chyba:

 Exited with error code 255 (expected 0)
   ←[1m←[37mNette\Database\ConnectionException: could not find driver←[0m

   in src\Database\DriverException.php(25)←[1m←[30m ←[0m
   in src\Database\Connection.php(70)←[1m←[30m Nette\Database\DriverException::from()←[0m
.....

Následně jsem chtel testy zlepší o použití TestCase, tedy kod vypadá takto:

<?php
require_once __DIR__ . '/../../bootstrap.php';
use Tester\Assert;
use Tester\TestCase;
use YetORM\EntityCollection as EC;
use Nette\Database\ResultSet as NResultSet;
use Nette\Database\Connection as NConnection;

class CategoriesRepositoryTest extends TestCase
{
	public function test()
	{
		$repo = ServiceLocator::getCategoriesRepository();
		/** @var \App\Models\Category $category */
		$category = $repo->getByID(1);
		Assert::true($category instanceof App\Models\Category);

		Assert::equal(3, $category->getChilds()->count());
	}

}

# Spuštění testovacích metod
$testCase = new CategoriesRepositoryTest();
$testCase->run();

Třidy serviceLocator a bootstrap jsem se inspiroval u testů z YetORM. Nyní ale po spustení testů pomocí php cesta_k_souboru_testu se mi vypíše chyba: Error: This test forgets to execute an assertion.

Kde je problém?

Ideálně bych rád spouštěl testy pomocí příkazu tester (tedy proč to nenajde driver?) a používal pro psaní testů třídu TestCase (tedy aby to pak nevypisovalo že nejsou asserce, když se v funkci vyskytují)

Díky za rady

abc
Člen | 92
+
+1
-

Musíš nastavit php.ini viz https://tester.nette.org/cs/#…

Petr9
Člen | 32
+
0
-

To se vztahuje k tomu problému se spoustením pomocí tester že?

když jsem to ozkoušel podle dokumentace vytvořil php.ini
s obsahem:
\[ PHP\]

extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll

memory_limit=512M

stále se zobrazuje stejná chyba
( FAILED: App\Models\categoriesRepositoryTest.phpt←[0m
Exited with error code 255 (expected 0)
←[1m←[37mNette\Database\ConnectionException: could not find driver←)

Je tedy potřeba nějak upravit soubor php.ini? Podle čeho pozná co je potřeba přidat?

Editoval Petr9 (15. 7. 2016 20:07)

abc
Člen | 92
+
+1
-

Ještě musíš nastavit extension_dir – kde to má ty DLLka hledat
Na Win např.
extension_dir = „C:\PHP\ext\“

Petr9
Člen | 32
+
0
-

Díky již lze spouštět.

Ještě tápu nad tím proč když použiji TestCase a přesunutí testu do třídy, funkcí tak se vypíše Error: This test forgets to execute an assertion.

David Matějka
Moderator | 6445
+
+2
-

pojmenuj tu metodu testXyz

Petr9
Člen | 32
+
0
-

David Matějka napsal(a):

pojmenuj tu metodu testXyz

á super už to nadherjně funguje. Díky všem