unittest लिएक्या प्रो-प्रोसेस-अलगाव विकल्प के साथ PhpUnit परीक्षण डीबग करना संभव है?
class SampleTest extends PHPUnit_Framework_TestCase
{
public function testBreakpoint()
{
$a = 18;
}
}
लाइन 5 पर ब्रेकप्वाइंट साथ
"$ एक = 18,",
- Xdebug v2.1.0,
- PHPUnit 3.6.10,
- पीएचपी 5.3.6 ,
- ubuntu 10,11
इकाई चल रहा है नो-प्रोसेस-अलगाव विकल्प के साथ परीक्षण लाइन 5 पर स्क्रिप्ट निष्पादन को रोकता है, जैसा कि अपेक्षित है। --process-अलगाव विकल्प के साथ एक ही विन्यास रनिंग लाइन पर निष्पादन नहीं रुकती 5.
विकल्प --process-अलगाव https://github.com/sebastianbergmann/phpunit/blob/3.6/PHPUnit/Util/PHP.php
में runJob समारोह में उपयोग करते हुए 'proc_open' नई प्रक्रिया में हर परीक्षण चलाता है डीबगर प्लगइन के साथ PhpStorm 3 और vim 7 के साथ परीक्षण किया गया। यह PHPUnit को डीबग करने की अनुमति देता है, लेकिन टेस्टकेस नहीं।
क्या Xdebug का उपयोग करके PhpUnit द्वारा बनाई गई बाल प्रक्रिया को डीबग करने का कोई तरीका है? ज़ेंड डीबगर हो सकता है?
मैं PHP तूफान या वीआईएम में डिबगिंग के लिए सेटअप नहीं कर रहा हूं, इसलिए आपको इसे आजमा देना होगा। यदि आप किसी भी तरह से पर्यावरण चर से बाहर निकल सकते हैं तो आप Xdebug या ZendDebugger को उन लोगों के साथ ट्रिगर कर सकते हैं। उदाहरण उदाहरण QUERY_STRING = "start_debug = 1 और debug_host = 10.1.1.17 और no_remote = 1 और debug_port = 10000 और debug_stop = 1"/usr/local/bin/php /var/www/test.php (http://kb.zend.com/index.php देखें = एंट्री और एंट्रीआईडी = 130)। Xdebug उदाहरण निर्यात XDEBUG_CONFIG = "idekey = session_name" (http://xdebug.org/docs/remote)। मुझे बताएं कि क्या वह काम करता है। – SamHennessy
@ सैमहेनेस हाँ, यह सीएलआई स्क्रिप्ट को डीबग करने का बिल्कुल सही तरीका है। जादू 'निर्यात' कमांड के बाद पर्यावरणीय चर मौजूद हो गए। सीएलआई स्क्रिप्ट को डीबग करने में कोई समस्या नहीं है। जैसा कि मैंने उल्लेख किया है, जब मैं PHPUnit एक ही थ्रेड में टेस्टकेस चलाता हूं तो मैं unittests डीबग कर सकता हूं: 'phpunit नमूना टेस्ट' एक आकर्षण की तरह काम करता है। 'Phpunit - प्रोसेस-अलगाव नमूनाटेस्ट' काम नहीं करता है। अंतिम आदेश 2 प्रक्रियाएं बनाता है: मुख्य PHPUnit, और प्रत्येक परीक्षण के लिए एक बच्चा। मैं केवल मुख्य प्रक्रिया को डीबग कर सकता हूं, लेकिन बच्चे नहीं, और यह एक समस्या है। –
मेरी धारणा यह थी कि PHPUnit के तहत चलाया गया उपयोगकर्ता वही उपयोगकर्ता होगा जैसा उपयोगकर्ता proc_open ऑपरेशन में उपयोग किया जाता है। यदि यह सच है तो इसे अतिरिक्त डीबग सत्रों को ट्रिगर करना चाहिए। मुझे नहीं पता कि वीआईएम या पीएचपी तूफान कई डीबग सत्रों का समर्थन कर सकता है या नहीं। इसे काम करने के लिए आपको अपनी प्रोफ़ाइल में env vars सेट करने की आवश्यकता हो सकती है। – SamHennessy