2012-12-05 16 views
9

मैं अपने यूनिट परीक्षणों को सख्त मोड में चलाना चाहता हूं ताकि मैं आसानी से किसी भी असाधारण लंबे परीक्षणों से अवगत हूं, लेकिन साथ ही 1s का डिफ़ॉल्ट टाइमआउट नहीं है पर्याप्त। क्या मैं इसे सभी परीक्षणों के लिए बदल सकता हूं? मुझे पता है कि मैं @short/@medium/@long एनोटेशन का उपयोग करके प्रत्येक वर्ग (और व्यक्तिगत परीक्षण) के लिए टाइमआउट सेट कर सकता हूं, लेकिन क्या ऐसे सभी परीक्षणों के लिए ऐसा कुछ है? शायद phpunit.xml में?PHPUnit सख्त मोड - डिफ़ॉल्ट टाइमआउट को कैसे बदलें

यह PHP_Invoker_TimeoutException: Execution aborted after 1 second से बचने के लिए है जो थोड़ी देर में होता है।

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/10520464/what-does-phpunit-strict-mode- – Smar

+0

मैंने इसे देखा है, लेकिन यह जवाब नहीं देता है कि वैश्विक स्तर पर इस सेटिंग को कैसे बदला जाए - PHPUnit स्रोत कोड को संपादित किए बिना, जिसे मैं टालना चाहता हूं। –

+0

आप इसे phpunit.xml से ही कर सकते हैं। जहां तक ​​मुझे पता है PHPUnit के लिए कोई वैश्विक कॉन्फ़िगरेशन फ़ाइल नहीं है। – Smar

उत्तर

25

विकल्प phpunit.xml में वांछित समय निर्धारित करके सक्षम किया जा सकता है। समय सेकंड में हैं।

उदाहरण:

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

टेस्ट मध्यम या निम्न

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

संपादित की तरह वास्तविक परीक्षण कार्यों में चिह्नित करके बड़े होने के लिए चिह्नित किया जा सकता: modern PHPUnit versions इन समय समाप्ति किसी भी अधिक नहीं करता है, और भी बदल जाता है सख्त मोड का व्यवहार आम तौर पर प्रत्येक चीज़ के लिए अलग झंडे पेश करके previously covered by strict mode:

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

असंबद्ध चेतावनी: यह XML कॉन्फ़िगरेशन फ़ाइल के सापेक्ष होने के लिए एक्सएमएल कॉन्फ़िगरेशन में परीक्षणों के पथों को भी बदलता है, क्योंकि पुरानी डिफ़ॉल्ट के विपरीत पथ वर्तमान कामकाजी डीआईआर के सापेक्ष हैं।

5

वैकल्पिक रूप से आप उन्हें भी अपने सेटअप में सेट कर सकते हैं() इस तरह विधि:

$this->getTestResultObject()->setTimeoutForSmallTests(1); 
$this->getTestResultObject()->setTimeoutForMediumTests(5); 
$this->getTestResultObject()->setTimeoutForLargeTests(10); 
संबंधित मुद्दे