У меня есть проект Zend Framework, и я хочу использовать модульное тестирование для его проверки.
В папке тестов у меня есть phpunit.xml
как phpunit.xml
ниже;
<phpunit bootstrap="./application/bootstrap.php" colors="true"> <testsuite name="Application Test Suite"> <directory>./</directory> </testsuite> <filter> <whitelist> <directory suffix=".php">../application/</directory> <exclude> <directory suffix=".phtml">../application/</directory> <file>../application/Bootstrap.php</file> <file>../application/controllers/ErrorController.php</file> </exclude> </whitelist> </filter> <logging> <log type="coverage-html" target="./log/reprot" charset="UTP-8" yui="true" highlight = "true" lowUpoerBound="50" highLowerBound="80"/> <log type="textdox" target="./log/testdox.html" /> </logging>
И у меня есть bootstrap.php
в папке / tests / application следующим образом:
<?php error_reporting(E_ALL | E_STRICT); // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing')); // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); require_once 'Zend/Loader/Autoloader.php'; require_once 'controllers/ControllerTestCase.php'; Zend_Loader_Autoloader::getInstance();
когда я иду в командную строку, запустите следующую команду
phpunit --configuration phpunit.xml
он выдает исключение:
PHP Неустранимая ошибка: исключить исключение «PHPUnit_Framework_Exception» с сообщением «Ни« Application Test Suite.php », ни« Application Test Suite.php »не могли быть открыт. в D: \ PHP \ php5 \ PEAR \ PHPUnit \ Util \ Skeleton \ Test.php: 102 Трассировки стека: # 0 D: \ PHP \ php5 \ PEAR \ PHPUnit \ TextUI \ Command.php (157): PHPUnit_Util_Skeleton_Test- > __ construct ('Application Tes ...', '') # 1 D: \ PHP \ php5 \ PEAR \ PHPUnit \ TextUI \ Command.php (129): PHPUnit_TextUI_Command-> run (Array, true) # 2 D: \ PHP \ php5 \ phpunit (53): PHPUnit_TextUI_Command :: main () # 3 {main} брошен в D: \ PHP \ php5 \ PEAR \ PHPUnit \ Util \ Skeleton \ Test.php в строке 102
Как я могу это исправить?
Вы заметите, что он выбрал исключение, потому что он ищет файл с именем, аналогичным name
вы предоставили для своего тестового набора. Вам нужно написать набор тестов, а затем указать название этого набора тестов в свой конфиг: http://www.phpunit.de/manual/3.2/en/organizing-test-suites.html
У меня была та же проблема с той же настройкой. Из того, что я понимаю, более свежие версии PHPUnit требуют, чтобы хотя бы один фактический тест работал правильно. После создания простого теста это сработало.
MyProject / тесты / приложения / DemoTest.php
<?php class DemoTest extends ControllerTestCase { public function setUp() { parent::setUp(); } public function testCanDoUnitTest() { $this->assertTrue(true); } }
Я заметил, что вы не используете <testsuites>
который содержит несколько вхождений <testsuite>
.
Вот мой phpunit.xml, который отлично подходит для проектов Zend Framework:
<testsuites> <testsuite name="UnitTests"> <directory>./library</directory> </testsuite> <testsuite name="ApplicationTests"> <directory>./application</directory> </testsuite> </testsuites>
во<testsuites> <testsuite name="UnitTests"> <directory>./library</directory> </testsuite> <testsuite name="ApplicationTests"> <directory>./application</directory> </testsuite> </testsuites>