Intereting Posts
Как отправить данные формы и динамически отобразить их с помощью ajax на одной странице Wrap DOM-элемент в другом элементе DOM в PHP Как я могу запустить mysql-запрос, когда пользователь выбирает новую опцию в поле выбора? Как предотвратить дублирование имен пользователей при регистрации? PHP / MySQL как получить доступ к командной строке для xampp на окнах Как запустить PHP-скрипт в запланированное время Ограничение запроса в MS Access в PHP Вызов неопределенной функции mcrypt_decrypt () – даже если установлен php5-mcrypt Вложенный короткий код для динамического отображения категории продуктов woocommerce PHP Удалить ключ из ассоциативного массива Виньетка PHP Imagemagick Установите PECL на Mac OS X 10.6 как изменить действие формы ссылки в соответствии с `<option>`? Загружать несколько файлов на сервер с php, не загружая на сервер все файлы Предупреждение об ошибке PHP: параметр 1 должен быть ссылкой

PHPUnit не может найти исходный код

У меня есть PHP-проект со следующей структурой проекта.

php_test_app src Vegetable.php tests StackTest.php VegetableTest.php 

Код этих файлов показан ниже. Я использую PDT и PTI в Eclipse. PHPUnit в Eclipse распознает, что VegetableTest.php принадлежит Vegetable.php , потому что вы можете переключаться между ними с помощью кнопки переключения.

Сначала я пытаюсь запустить тестовый код, выбрав каталог тестов в Проводнике PHP и нажмите « Run Selected PHPUnit Test . Он запускает оба теста, и VegetableTest терпит неудачу со следующей трассировкой: Fatal error: Class 'Vegetable' not found in /Users/erwin/Documents/workspace/php_test_app/tests/VegetableTest.php on line 8 . Аналогичная проблема была опубликована здесь: phpunit не может найти Class, PHP Fatal error .

Действительно, я еще не включил свой исходный код, поэтому теперь я раскомментирую включение в VegetableTest.php , как показано ниже. Если я сейчас попытаюсь запустить тесты таким же образом, PHPUnit не распознает какой-либо тестовый код! Даже StackTest , который не изменяется, не распознается.

  1. Как включить включение, чтобы распознать модульные тесты?
  2. Нужно ли указывать полный путь или просто имя файла, в котором определяется класс?

Изменение оператора include также не работает; Я попробовал следующее.

 include 'Vegetable.php'; include 'src/Vegetable.php'; include '../src/Vegetable.php'; 

Vegetable.php

 <?php // base class with member properties and methods class Vegetable { var $edible; var $color; function Vegetable($edible, $color="green") { $this->edible = $edible; $this->color = $color; } function is_edible() { return $this->edible; } function what_color() { return $this->color; } } // end of class Vegetable // extends the base class class Spinach extends Vegetable { var $cooked = false; function Spinach() { $this->Vegetable(true, "green"); } function cook_it() { $this->cooked = true; } function is_cooked() { return $this->cooked; } } // end of class Spinach 

StackTest.php

 <?php class StackTest extends PHPUnit_Framework_TestCase { public function testPushAndPop() { $stack = array(); $this->assertEquals(0, count($stack)); array_push($stack, 'foo'); $this->assertEquals('foo', $stack[count($stack)-1]); $this->assertEquals(1, count($stack)); $this->assertEquals('foo', array_pop($stack)); $this->assertEquals(0, count($stack)); } } ?> 

VegetableTest.php

 <?php // require_once ('../src/Vegetable.php'); class VegetableTest extends PHPUnit_Framework_TestCase { public function test_constructor_two_arguments() { $tomato = new Vegetable($edible=True, $color="red"); $r = $tomato.is_edible(); $this->assertTrue($r); $r = $tomato.what_color(); $e = "red"; $this->assertEqual($r, $e); } } class SpinachTest extends PHPUnit_Framework_TestCase { public function test_constructor_two_arguments() { $spinach = new Spinach($edible=True); $r = $spinach.is_edible(); $this->assertTrue($r); $r = $spinach.what_color(); $e = "green"; $this->assertEqual($r, $e); } } ?> 

Solutions Collecting From Web of "PHPUnit не может найти исходный код"