Test php fonksiyonları netbeans ve PHPUnit ile (değil sınıflar)

1 Cevap php

Ben bir fonksiyonları kütüphane dosyası için birim testi çalıştırmak istiyorum ...

O bunun içinde yardımcı fonksiyonları ile sadece bir dosya var, ben bir sınıf yok, bir ...

örneğin, ben ~ / www / test bir php proje yarattık

ve bir dosya ~ / www / test / lib / format.php

<?php

function toUpper( $text ) {
  return strtoupper( $text );
}

function toLower( $text ) {
  return strtolower( $text );
}

function toProper( $text ) {
  return toUpper( substr( $text, 0, 1 ) ) .  toLower( substr( $text, 1) );
}
?>

araçlar -> bana aşağıdaki hatayı veriyor PHPUnit testler oluşturmak:

Sebastian Bergmann tarafından 3.4.5 phpunit.

Could not find class "format" in "/home/sas/www/test/lib/format.php".

now, if I code (by hand!) the file ~/www/test/tests/lib/FormatTest.php

<?php
require_once 'PHPUnit/Framework.php';
require_once dirname(__FILE__).'/../../lib/format.php';

class FormatTest extends PHPUnit_Framework_TestCase {

  protected function setUp() {}

  protected function tearDown() {}

  public function testToProper() {
    $this->assertEquals(
            'Sebastian',
            toProper( 'sebastian' )
    );
  }
}
?>

gayet iyi çalışıyor, bunu çalıştırmak ...

ama ben almak format.php itibaren test dosyasını seçerseniz

Test file for the selected source file was not found

Herhangi bir fikir?

saludos

sas

ps: başka bir soru, elle bunları silmek zorunda kalmadan oluşturulan testleri güncelleştirmek için bir yolu var mı??

ps2: NetBeans 2.8 dev kullanarak

1 Cevap

Eğer yazdım nasıl Birim test case% 100 doğru. Sorun, ortak kongre ve nasıl PHPUnit ve NetBeans onlara güvenir ile yatıyor.

En iyi uygulama bu gün bir nesne yönelimli bir şekilde tüm kod yazmak için. Peki yerine ne var gibi yardımcı fonksiyonları tam bir PHP dosyası olan, bir sınıf içine bu işlevleri kaydırmak ve onları gibi statik işlevlere sahiptir. İşte yukarıdaki kodu kullanarak bir örnek,

<?php

class Format
{
    public static function toUpper($text)
    {
        return strtoupper($text);
    }

    public static function toLower($text)
    {
        return strtolower($text);
    }

    public static function toProper($text)
    {
        return self::toUpper(substr($text, 0, 1 )) .  self::toLower(substr($text, 1));
    }
}

Sen şimdi çok gibi fonksiyonları kullanmak istiyorum,

Format::toProper('something');

PHPUnit ve NetBeans, bu nesne odaklı felsefesine bağlıdır. Otomatik olarak bir PHPUnit test durumu oluşturmaya çalıştığınızda, PHPUnit bir sınıf için dosyanıza bakar. Daha sonra bu sınıfa dayalı bir test durumu yaratır ve kamu API, ve bunu ClassNameTest çağırır, ClassName sınıf test edilmenin adıdır.

Neatbeans de bu kuralı izler ve ClassNameTest ClassName için bir PHPUnit test case olduğunu bilir, böylece IDE ikisi arasında bir bağlantı oluşturur.

Yani, benim tavsiyem nerede olabilir, her zaman sınıfları kullanmaktır. Eğer bir şeye bağlı olmayan ve küresel kullanılır, onları statik olanları yapmak yarar fonksiyona sahiptir.

Side note: Ben senin iki fonksiyon toUpper() ve toLower() kurtulmak istiyorum. Gerek yokken PHP fonksiyonları inşa sarmak için gerek yok. Onlar iyice test olarak bunları test etmek gerek de yoktur.

Site note 2: tür var, bir senin fonksiyonu toProper() denilen PHP eşdeğer yerleşik ucfirst().