Я пытаюсь добавить настраиваемое утверждение в 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 с помощью пользовательских утверждений и увидеть, что я делаю неправильно?