PHPUnit - Autoload-Klassen innerhalb von Tests
Ich habe folgende Struktur in meinem Projekt:
/
/app
/app/models/ --UserTable.php
/lib
/lib/framework
/lib/framework/Models
/lib/framework/Db
/tests -- phpunit.xml, bootstrap.php
/tests/app
/tests/app/models --UserTableTest.php
Mit den Verzeichnissen app und lib habe ich verschiedene Klassen, die zusammenarbeiten, um meine App auszuführen. Um meine Tests einzurichten, habe ich eine /tests/phpunit.xml-Datei und eine /tests/bootstrap.php erstellt
phpunit.xml
<phpunit bootstrap="bootstrap.php">
</phpunit>
bootstrap.php
<?php
function class_auto_loader($className)
{
$parts = explode('\\', $className);
$path = '/var/www/phpdev/' . implode('/', $parts) . '.php';
require_once $path;
}
spl_autoload_register('class_auto_loader');
Ich habe also folgenden Test:
<?php
class UserTableTest extends PHPUnit_Framework_TestCase
{
protected $_userTable;
public function setup()
{
$this->_userTable = new app\models\UserTable;
}
public function testFindRowByPrimaryKey()
{
$user = $this->_userTable->find(1);
$this->assertEquals($user->id, 1);
}
}
Aber es kann die Klasse nicht finden, wenn ich den Test durchführe -PHP Fatal error: Class 'app\models\UserTable' not found in /var/www/phpdev/tests/app/models/UserTableTest.php on line 13
Was mache ich falsch? Ich versuche, die PHPUnit-Konfiguration besser zu verstehen, deshalb habe ich mich entschieden, die Konfigurations- und Bootstrap-Datei selbst zu schreiben.