Nette Tester – Class Tester\TestCase not found

MartinVolenec
Člen | 36
+
0
-

Dobrý den,

rozhodl jsem se krom PHPUnit začít používat i Nette Tester na jiném projektu.

Udělal jsem vše podle Nette Tester stránky – průvodce.

Jsem zvyklý na testy v třídách, tak jsem si udělal následující test:

<?php
declare(strict_types=1);

use Tester\Assert;
use Tester\TestCase;

use App\Services\Authentication\OAuthToken;

/**
 * Class OAuthTokenTest
 */
class OAuthTokenTest extends TestCase
{
    public function testInitialization()
    {
        $token = 'token';

        $result = new OAuthToken($token);

        Assert::same($token , $result->getString());
    }
}
?>

Jedná se pouze testování, zda testování funguje :)

Ve složce tests mám i soubor bootstrap:

<?php
require __DIR__ . '/../vendor/autoload.php';

Tester\Environment::setup();
date_default_timezone_set('Europe/Prague');

define('TMP_DIR', '/tmp/demo-app-tests');
?>

Dle stránky jsem pochopil, že ho Tester načítat sám.
Avšak pokud spustím vendor/bin/tester tests, skočí mi tato chyba:

<?php
 _____ ___  ___ _____ ___  ___
|_   _/ __)( __/_   _/ __)| _ )
  |_| \___ /___) |_| \___ |_|_\  v2.1.0

Note: No php.ini is used.
PHP 7.2.3 (cli) | php -n | 8 threads

F

-- FAILED: OAuthTokenTest.php
   Exited with error code 255 (expected 0)

   Fatal error: Class 'Tester\TestCase' not found in C:\xampp\htdocs\portal\tests\services\Authentication\OAuthTokenTest.php on line 19


FAILURES! (1 test, 1 failure, 0.0 seconds)

?>

Nějaké nápady, co je špatně?

Milo
Nette Core | 1283
+
+2
-

Tester soubor bootstrap.php nenačte automaticky. Každý test ho musí vkládat.

V testu pak ještě chybí

(new OAuthTokenTest)->run();
CZechBoY
Člen | 3608
+
0
-

A hodi se i anotace @testCase nad testcase tridou.

jiri.pudil
Nette Blogger | 1028
+
0
-

Tester soubor bootstrap.php nenačte automaticky.

@Milo je to jenom nepromyšlený nápad, ale co bys říkal na to, kdyby to Tester uměl, jako opt-in? Řekl bych, že většina projektů si v testech vystačí s jedním stejným bootstrapem, takže by si mohly ten jeden rutinní řádek ušetřit. Pro mě je require bootstrapu něco, na co asi nejčastěji zapomenu nebo kde musím pravidelně přemýšlet, na jaké relativní cestě ten bootstrap vůbec je, takže bych v automatickém načítání rozhodně viděl přínos. A implementačně by to nemuselo být složité, na první pohled by snad mohlo stačit spouštět jednotlivé testy s -d auto_prepend_file=/path/to/bootstrap.php

Tak ne, beru zpět, byl opravdu nepromyšlený. Nedaly by se pak spouštět jednotlivé testy samostatně.

Editoval jiri.pudil (20. 12. 2018 13:23)

Milo
Nette Core | 1283
+
+1
-

@jiri.pudil Souvisí s https://github.com/…ter/pull/355