2012-03-07 13 views
72

मैं PHPUnit का उपयोग कर अपने symfony2 एप्लिकेशन का परीक्षण करने की कोशिश कर रहा हूं। मुझे एक प्रोजेक्ट मिला जहां सबकुछ अपेक्षित काम करता है, लेकिन मेरे अन्य प्रोजेक्ट पर मेरे पास यह अजीब व्यवहार है कि PHPUnit या तो सभी परीक्षणों के अंत में यादृच्छिक रूप से टेस्ट सूट निष्पादित करना बंद कर देता है और टेस्ट सूट को खत्म करने और कोड लिखने के बाद परीक्षण को पुनरारंभ करता है या फिर से शुरू करता है कवरेज। अन्य बार यह सामान्य रूप से चलता है।phpunit पुनरारंभ परीक्षण यादृच्छिक रूप से

PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
.................. 

Time: 01:29, Memory: 53.25Mb 

OK (83 tests, 145 assertions) 

Writing code coverage data to XML file, this may take a moment. 

Generating code coverage report, this may take a moment. 
PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
............PHPUnit 3.6.10 by Sebastian Bergmann. 
: सभी परीक्षणों को क्रियान्वित करने के बाद

PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
...........PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
...PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
............PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
............PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
.................. 

Time: 01:03, Memory: 43.00Mb 

OK (83 tests, 145 assertions) 

Writing code coverage data to XML file, this may take a moment. 

Generating code coverage report, this may take a moment. 

यहाँ टेस्ट सुइट पुनरारंभ का एक उदाहरण है:

यहाँ (टेस्ट अधिक से अधिक को पुन: प्रारंभ किया जाता है) कुछ उत्पादन दिखाई क्या हो रहा है बनाने के लिए है

जैसा कि मेरी अन्य परियोजना बिना किसी समस्या के चलती है, मेरे कोड में कुछ समस्या होनी चाहिए। लेकिन मैं यह नहीं समझ सकता कि संभवतः इस व्यवहार को किस प्रकार ट्रिगर करता है! लॉग अप्रत्याशित/अजीब कुछ भी नहीं दिखाते हैं।

संपादित

कल, मैं कुछ अजीब देखा: मैं क्योंकि कुछ असंबंधित कारणों में से MySQL के लिए MongoDB से स्विच करने का फैसला किया। संक्रमण के बाद, सभी परीक्षण बिना किसी समस्या के चलते हैं। मैंने इसे कई बार कोशिश की और मैं अब इसे पुन: उत्पन्न करने में सक्षम नहीं हूं। चूंकि यह केवल मेरे कार्यात्मक परीक्षणों के साथ हुआ, मुझे लगता है कि समस्या मेरी वेबटेस्टकेस क्लास थी, जो डेटाबेस को साफ़ और पुनर्निर्माण करने के लिए कुछ आदेश चलाती है। शायद कोई भी जो मोंगोडीबी का उपयोग करता है, इस व्यवहार को पुन: उत्पन्न कर सकता है?

+0

ऐसा लगता है कि यह हमेशा एक ही स्थान पर 65/83 है। क्या आप यह पता लगा सकते हैं कि यह कौन सा परीक्षण हो रहा है? चलते समय '--verbose' विकल्प का उपयोग करने का प्रयास करें। –

+0

65/83 का मतलब है कि पंक्ति 1 में, 65 परीक्षण जहां निष्पादित (प्रत्येक बिंदु एक परीक्षण है)। दूसरी पंक्ति में आप देखते हैं कि निष्पादित परीक्षणों की संख्या समान नहीं है, इसलिए मुझे संदेह है कि यह एक परीक्षण है जो असफल रहा है। जैसे-जैसे परीक्षण कभी-कभी काम करते हैं और कभी-कभी लूप, मुझे संदेह है कि यह एक परीक्षण के कारण है। लेकिन मैं आगे की जांच करूंगा! – Sgoettschkes

+1

मेरा बुरा! मेरे पास उस मस्तिष्क में कहीं ज्ञान था। यहां एक प्रश्न है - क्या आप एक अलग PHP प्रक्रिया में प्रत्येक परीक्षण चला रहे हैं? यह असामान्य गतिविधि पैदा कर सकता है। हम PHPUnit के उसी संस्करण का उपयोग हर समय करते हैं, और जो भी आप देख रहे हैं उसके रूप में पागल के रूप में कुछ भी नहीं देखा है! –

उत्तर

1

मैं डेटाबेस सर्वर कनेक्शन सीमा और पूल की जांच करने का सुझाव दूंगा।

उदाहरण के लिए यदि आपके पास 100 कनेक्शन की अधिकतम सीमा है, और कुछ परीक्षण कनेक्शन खोलते हैं ("लीक"), तो आप वहां सीमाएं मार देंगे।

यह भी समझाएगा कि कभी-कभी यह क्यों काम करता है और कभी-कभी यह सीमा को हिट करता है, क्योंकि आपका डेटाबेस एक साथ अन्य कार्यों को संभाल सकता है, इसलिए कभी-कभी आप छत को दबाते हैं, दूसरी बार जब कुछ और नहीं चलता है, तो आप सफलतापूर्वक अपने परीक्षण चला सकते हैं।

लगातार नेटवर्क कनेक्शन और अन्य बाहरी संसाधनों की जांच करें।

संबंधित मुद्दे