Ben karmaşık sayılar bir dizge olarak döndürülür doğrulamak için, this tutorial sonrasında PHPUnit için özel assert eklemek çalışıyorum gerekli iddia (örnPHPUnit Özel yardım
"-123 + 456i"
, test ettiğim yöntemle) hem gerçek hem de sanal bileşenler için tanımlı bir kesinliğe.
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);
}
}
}
Benim birim test komut:
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');
}
}
Ben gerçek ve hayali bölüme dizeyi ayrıştırmak ve complexAssert.php olarak aşağıdaki onaylama işlemi sınıfını herkesi bir araya getirdi Complex.php sınıfını koyduk
Birim testler hatasız çalıştı (ancak başarısız oldu), sadece bir assertEquals yapıyordum ... ama şimdi ekledim ve yeni assert olarak değiştirdim, unertfined method assertComplexEquals'ı çağıramayacağını iddia ederek çöküyor.).
Herhangi bir kişi, phpunit'i özel önerilerle genişletmeyi başarabilmiş ve ne yaptığımı görebiliyor mu?
Yapabilirsin daha iyi resmi http://www.phpunit.de/manual/current/en/extending-phpunit.html#extending-phpunit.custom-assertions – zerkms
Bu sorunun ilgisiz olmasına rağmen, '__DIR__' kullanmak isteyebilirsiniz (PHP 5.3 +) veya 'dirname (__ FILE __)' yerine de Program çalışırken değişebilen mevcut çalışma dizini beklemede. –
@David Harkness: Bahse girerim bu durumda getcwd()! = __DIR__' – zerkms