Сбой PHPUnit в Netbeans с пространствами имен - PullRequest
2 голосов
/ 11 сентября 2011

У меня есть: PHP 5.3.8, PHPUnit 3.5.15, Netbeans 7.0.1

При использовании стандартного примера Netbeans для тестирования PHPUnit он работает отлично. Добавляя только «тест пространства имен»; Я получаю сообщение об ошибке, что Calculator.php не является ни файлом, ни каталогом. Как решить эту проблему? (Я хотел бы использовать декларативное пространство имен в моем проекте)

КЛАСС ДЛЯ ИСПЫТАНИЙ:

namespace test;

class Calculator {

/**
 * @assert (0, 0) == 0
 * @assert (0, 1) == 1
 * @assert (1, 0) == 1
 * @assert (1, 1) == 2
 * @assert (1, 2) == 4
 */
public function add($a, $b) {
    return $a + $b;
}

}

?>

ТЕСТ ДЛЯ БЛОКА:

require_once dirname(__FILE__) . '/../Calculator.php';

/**
 * Test class for Calculator.
 * Generated by PHPUnit on 2011-09-11 at 00:52:24.
 */
class CalculatorTest extends PHPUnit_Framework_TestCase {

/**
 * @var Calculator
 */
protected $object;

/**
 * Sets up the fixture, for example, opens a network connection.
 * This method is called before a test is executed.
 */
protected function setUp() {
    $this->object = new Calculator;
}

/**
 * Tears down the fixture, for example, closes a network connection.
 * This method is called after a test is executed.
 */
protected function tearDown() {

}

/**
 * Generated from @assert (0, 0) == 0.
 */
public function testAdd() {
    $this->assertEquals(
            0, $this->object->add(0, 0)
    );
}

/**
 * Generated from @assert (0, 1) == 1.
 */
public function testAdd2() {
    $this->assertEquals(
            1, $this->object->add(0, 1)
    );
}

/**
 * Generated from @assert (1, 0) == 1.
 */
public function testAdd3() {
    $this->assertEquals(
            1, $this->object->add(1, 0)
    );
}

/**
 * Generated from @assert (1, 1) == 2.
 */
public function testAdd4() {
    $this->assertEquals(
            2, $this->object->add(1, 1)
    );
}

/**
 * Generated from @assert (1, 2) == 4.
 */
public function testAdd5() {
    $this->assertEquals(
            4, $this->object->add(1, 2)
    );
}

}

?>

Ответы [ 2 ]

4 голосов
/ 11 сентября 2011

@ Томаш ответ, конечно, правильный.Как небольшое дополнение:

Из того, что я понимаю, стало обычной практикой помещать ваши тесты в то же пространство имен, что и ваш производственный класс.

namespace test;
require_once dirname(__FILE__) . '/../Calculator.php';

class CalculatorTest extends \PHPUnit_Framework_TestCase {

, тогда вы можете продолжить использовать

$this->object = new Calculator:
3 голосов
/ 11 сентября 2011

Узнайте об использовании классов пространства имен в вашем коде.Вам нужно создать экземпляр класса Calculator не с:

$this->object = new Calculator;

, а с:

$this->object = new \test\Calculator;

Я предполагаю, что класс загружен.Если не видите ваш автозагрузчик или правильный путь к файлу.

...