phpunit требует помощи настраиваемых утверждений

Я пытаюсь добавить настраиваемое утверждение в phpunit, следуя этому руководству , для проверки комплексных чисел, возвращаемых в виде строки (например,

"- 123 + 456i "

методом, который я тестирую) с определенной точностью как для действительной, так и для мнимой составляющих. Я поместил класс Complex.php для разбора строки на действительную и мнимую части и собрал следующий класс утверждения как complexAssert.php:

require_once 'PHPUnit/Framework/Assert.php';
include_once getcwd().'/custom/Complex.php';

class complexAssert extends PHPUnit_Framework_Assert {

    public function assertComplexEquals($expected, $actual, $message = '', $delta = 0)
    {
        $expectedComplex = new Complex($expected);
        $actualComplex = new Complex($actual);

        if (!($actualComplex->getReal() >= ($expectedComplex - $delta) &&
            $actualComplex->getReal() <= ($expectedComplex + $delta))) {
            return $this->fail($message);
        }

        if (!($actualComplex->getImaginary() >= ($expectedComplex - $delta) &&
            $actualComplex->getImaginary() <= ($expectedComplex + $delta))) {
            return $this->fail($message);
        }

    }
}

Мой сценарий модульного тестирования:

require_once getcwd().'/custom/complexAssert.php';
require_once 'testDataFileIterator.php';

class EngineeringTest extends PHPUnit_Framework_TestCase
{
    /**
     * @dataProvider providerIMSUM
     */
    public function testIMSUM()
    {
        $args = func_get_args();
        $expectedResult = array_pop($args);
        $result = call_user_func_array(array('PHPExcel_Calculation_Engineering','IMSUM'),$args);
        $this->assertComplexEquals($expectedResult, $result);
    }

    public function providerIMSUM()
    {
        return new testDataFileIterator('rawTestData/Calculation/Engineering/IMSUM.data');
    }
}

Модульные тесты работали без ошибок ( но не удалось), когда я просто выполнял assertEquals ... но теперь я добавил include и изменил свое новое assert, он терпит неудачу, утверждая, что не может вызвать неопределенный метод assertComplexEquals ().

Кому-нибудь удалось расширить phpunit с помощью пользовательских утверждений и увидеть, что я делаю неправильно?

6
задан Mark Baker 23 January 2012 в 00:34
поделиться