2013-08-15 21 views
10

Farklı ayarlarla birden çok kez bir test çantasının nasıl çalıştırılacağını arıyorum.Bir PHPUnit test çantasını birden çok kez çalıştırma

Veritabanı erişim sınıfını (düzinelerce test yöntemi) test ediyorum ve "normal modda" ve ardından "hata ayıklama modunda" test etmek istiyorum. Her iki mod da aynı test sonuçlarını üretmelidir.

Bunu test çantası ayarında yapmak için herhangi bir imkan var mı? Ya da run() yöntemini geçersiz kılıyor mu? Ben tabii ki, iki kez test yazmak istemiyorum :)

size

düzenleme ederiz: ANLADIM!

public function run(PHPUnit_Framework_TestResult $result = NULL) 
{ 
    if ($result === NULL) { 
     $result = $this->createResult(); 
    } 

    /** 
    * Run the testsuite multiple times with different debug level 
    */ 
    $this->debugLevel = 0; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 8; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 16; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    return $result; 
} 

public function setUp() 
{ 
    parent::setUp(); 
    $this->myclass->setOptions('debug', $this->debugLevel); 
} 
+8

Test veri kümelerini yayan '@ dataProvider' işlevlerine bir göz atın. – Sven

+0

Kullanım verilerini biliyorumProviders :) Sadece sınıfın basit bir ayarını değiştirmek ve daha sonra TÜM test yöntemlerini tekrar çalıştırmak istiyorum. Gibi bir şey: run(); $ Sınıf-> setDebug (true); koşmak(); –

+0

Tamam, sanırım bu normal durum değil. Orijinal test sınıfını genişletmeyi ve bir şeyi setUp() 'de değiştirmeyi denediniz mi? Bu, tüm test kodlarını yeni bir etiket altında kalmalı ve eşyaları iki kez çalıştırmalıdır. – Sven

cevap

-1

PHPUnit, test dekoratörleri sunar. documentation aslında bir dekoratör ile ne yapılacağının örneği olarak yinelenen dekoratöre sahiptir. Dekoratör, PHPUnit_Framework_TestCase alt sınıflamaya bağlı olmadan, davranışı yeniden kullanılabilir bir şekilde uygulamak için mükemmel bir yol olacaktır.