phpunit создает исключение Uncaught 'PHPUnit_Framework_Exception - PullRequest
6 голосов
/ 25 апреля 2011

У меня есть проект Zend Framework, и я хочу использовать модульное тестирование для его тестирования.

В папке для тестов у меня есть 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

itвыдает исключение:

PHP Fatal error:  Uncaught exception 'PHPUnit_Framework_Exception' with message
'Neither "Application Test Suite.php" nor "Application Test Suite.php" could be
opened.' in D:\PHP\php5\PEAR\PHPUnit\Util\Skeleton\Test.php:102
Stack trace:
#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}
  thrown in D:\PHP\php5\PEAR\PHPUnit\Util\Skeleton\Test.php on line 102

Как я могу это исправить?

Ответы [ 3 ]

7 голосов
/ 23 сентября 2011

У меня была такая же проблема с той же настройкой. Из того, что я понимаю, более поздние версии PHPUnit требуют по крайней мере одного фактического теста для правильной работы. После создания простого теста все заработало.

MyProject / тесты / приложения / DemoTest.php

<?php
class DemoTest extends ControllerTestCase
{
    public function setUp() {
        parent::setUp();
    }

    public function testCanDoUnitTest() {
        $this->assertTrue(true);
    }
}
5 голосов
/ 25 апреля 2011

Вы заметите, что оно выдает исключение, потому что ищет файл с таким же именем, как и name, предоставленный для вашего набора тестов.Вам действительно нужно написать набор тестов, а затем указать имя этого набора тестов в вашей конфигурации: http://www.phpunit.de/manual/3.2/en/organizing-test-suites.html

0 голосов
/ 25 апреля 2011

Я заметил, что вы не используете <testsuites>, который содержит несколько экземпляров <testsuite>.

Вот мой phpunit.xml, который отлично работает для проектов Zend Framework:

<testsuites>
  <testsuite name="UnitTests">
    <directory>./library</directory>
  </testsuite>
  <testsuite name="ApplicationTests">
    <directory>./application</directory>
  </testsuite>
</testsuites>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...