Для запуска тестов проекта NetBeans использует класс NetBeansSuite, который находится в моем случае в каталоге C:\Program Files\NetBeans 6.10 M1\php\phpunit\NetBeansSuite.php. Мы можем переопределить стандартную конфигурацию запуска тестов тремя способами:
1. Файл начальной загрузки (bootstrap file)
2. Файл конфигурации xml
3. Собственный класс расширяющий PHPUnit_Framework_TestSuite
В данном случае интересует вариант 3.
В каталоге с тестами проекта я создал файл MySuite.php
// MySuite.php require_once 'MyClassATest.php'; require_once 'MyClassBTest.php'; require_once 'MyListener.php'; class MySuite extends PHPUnit_Framework_TestSuite { public function setUp() { parent::setUp(); echo __METHOD__ . "\n"; } public function tearDown() { parent::tearDown(); echo __METHOD__ . "\n"; } public static function suite() { $suite = new MySuite(); $suite->addTestSuite('MyClassATest'); $suite->addTestSuite('MyClassBTest'); return $suite; } public function run(PHPUnit_Framework_TestResult $result = NULL, $filter = FALSE, array $groups = array(), array $excludeGroups = array(), $processIsolation = FALSE) { if($result == NULL) { $result = new PHPUnit_Framework_TestResult(); } $result->addListener(new MyListener()); parent::run($result, $filter, $groups, $excludeGroups, $processIsolation); } }
В настройках проекта необходимо указать, что используем собственный класс и путь к нему. Теперь мы можем вызывать в методах setUp и tearDown все что нам нужно.
Запуск тестового набора ALT - F6 ...
PHPUnit 3.5.0 by Sebastian Bergmann.
MySuite::setUp
MyListener::startTest
MyClassATest::setUp
.MyListener::endTest
MyListener::startTest
MyClassATest::setUp
.MyListener::endTest
MyListener::startTest
MyClassBTest::setUp
IMyListener::endTest
MyListener::startTest
MyClassBTest::setUp
IMyListener::endTest
MySuite::tearDown
Time: 1 second, Memory: 4.00Mb
OK, but incomplete or skipped tests!
Tests: 4, Assertions: 1, Incomplete: 2.
Классы модели наследуют определенный супер-класс. В моем случае это Doctrine_Record.
Для того чтобы можно было создавать тесты классов из контекстного меню (Tools -> Create PHPUnit tests), необходимо создать bootstrap.php.
// bootstrap.php function myAutoloader($className) { if(class_exists($className) === false) @require_once implode('/', explode('_', $className)) . '.php'; } define('DOCROOT', realpath(dirname(__FILE__) . '/..')); define('DOCTRINE_PATH', DOCROOT . '/library'); define('MODELS_PATH', DOCROOT . '/application/models'); set_include_path ( get_include_path() . PATH_SEPARATOR . MODELS_PATH . PATH_SEPARATOR . DOCROOT . '/tests/application/models' ); require_once DOCTRINE_PATH . '/Doctrine.php'; spl_autoload_register(array('Doctrine', 'autoload')); spl_autoload_register(array('Doctrine', 'modelsAutoload')); spl_autoload_register('myAutoloader'); // Модель, которая будет использоваться для генерации таблиц sqlite Doctrine_Core::setModelsDirectory(MODELS_PATH); Doctrine_Core::loadModels(MODELS_PATH);
Что-то вроде этого ...
В настройках проекта указываем bootstrap и указываем, что используем его для генерации классов. Вызов Skeleton Generator PHPUnit также имеет опцию bootstrap.
Таким образом мы инициализируем все автозагрузчики классов.
Комментариев нет:
Отправить комментарий