2012-12-05 24 views
9

Birim testlerimi sıkı modda çalıştırmaya devam etmek istiyorum, böylece herhangi bir son derece uzun testlerden kolayca haberdar olabilirim, ancak aynı zamanda 1s varsayılan zaman aşımı yok yeterli. Tüm testler için değiştirebilir miyim? @short/@medium/@long ek açıklamalarını kullanarak her bir sınıf için (ve bireysel testler) zaman aşımı ayarlayabildiğimi biliyorum, ancak tüm testler için böyle bir şey var mı? Belki phpunit.xml içinde? Bu, bir süre içinde gerçekleşen PHP_Invoker_TimeoutException: Execution aborted after 1 second'dan kaçınmaktır.PHPUnit katı mod - varsayılan zaman aşımı nasıl değiştirilir

+0

Olası yinelenen: http://stackoverflow.com/questions/10520464/what-does-phpunit-strict-mode- – Smar

+0

dolara baktım ama bu ayarı global olarak nasıl değiştireceğimi - PHPUnit kaynak kodunu düzenlemeden - kaçınmak istiyorum. –

+0

Bunu yalnızca phpunit.xml dosyasından yapabilirsiniz. Bildiğim kadarıyla PHPUnit için genel bir yapılandırma dosyası yok. – Smar

cevap

25

Bu seçenek phpunit.xml içinde istenilen zamanları ayarlayarak etkinleştirilebilir. Saatler saniye cinsindendir.

Örnek:

<phpunit 
    strict="true" 
    timeoutForSmallTests="1" 
    timeoutForMediumTests="5" 
    timeoutForLargeTests="10" 
> 
// test suites 
</phpunit> 

Testler

/** 
* @medium 
*/ 
public function testTestThing() { 
    $this->assertTrue(false); 
} 

DÜZENLEME aşağıdaki gibi testlerde bu fonksiyonları işaretleyerek, orta ya da büyük olması işaretlenebilir : modern PHPUnit versions artık bu zaman aşımı yapmak değildir ve de değişir genellikle her bir şey için ayrı bayraklar ekleyerek sıkı modun davranışı:

beStrictAboutTestsThatDoNotTestAnything="true" 
checkForUnintentionallyCoveredCode="true" 
beStrictAboutOutputDuringTests="true" 
beStrictAboutTestSize="true" 
beStrictAboutChangesToGlobalState="true" 

İlişkin olmayan uyarı: Ayrıca, XML yapılandırma dosyasındaki testlerin yollarının, eski varsayılan ayarların geçerli çalışma yönüne göre olması gerektiğinden, XML yapılandırma dosyasına göreli olarak da değiştirir. Böyle

5

Alternatif olarak, web setUp da bunları ayarlayabilirsiniz() yöntemi:

$this->getTestResultObject()->setTimeoutForSmallTests(1); 
$this->getTestResultObject()->setTimeoutForMediumTests(5); 
$this->getTestResultObject()->setTimeoutForLargeTests(10); 
İlgili konular