phpunit throws Необязательное исключение "PHPUnit_Framework_Exception

У меня есть проект 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>