रन पूर्ण PHPUnit सूट उठाने के लिए आवश्यक समय के रूप में, हमारी टीम सोचती है कि समानांतर में यूनिट परीक्षण चलाने की संभावना है या नहीं। हाल ही में मैंने पैराुनिट के बारे में एक लेख पढ़ा, सेबेस्टियन बर्गमैन ने भी लिखा, वह PHPUnit 3.7 में समांतरता जोड़ देगा।एकीकरण परीक्षणों में समांतर PHPUnit परीक्षण
लेकिन एकीकरण परीक्षण के साथ समस्या है, या अधिक आम तौर पर, परीक्षण जो डीबी के साथ बातचीत करते हैं। स्थिरता के लिए, testDB को प्रत्येक परीक्षण के बाद रीसेट किया जाना चाहिए और फिक्स्चर लोड करना होगा। लेकिन समानांतर परीक्षणों में दौड़ की स्थिति में कोई समस्या है, क्योंकि सभी प्रक्रियाएं उसी डीबी का उपयोग करती हैं।
तो समानांतर में एकीकरण परीक्षण चलाने में सक्षम होने के लिए, हमें प्रत्येक प्रक्रिया पर अपना डेटाबेस असाइन करना होगा। मैं पूछना चाहूंगा, अगर किसी के पास इस समस्या को हल करने के बारे में कुछ विचार हैं। हो सकता है कि इस समस्या के लिए पहले से ही एक अन्य xUnit कार्यान्वयन में समाधान लागू हो चुके हैं।
मेरी टीम में हम मोंगोडीबी का उपयोग कर रहे हैं, इसलिए एक समाधान प्रोग्रामेटिक रूप से प्रत्येक PHPUnit प्रक्रिया के लिए कॉन्फ़िगरेशन फ़ाइल बनाने के लिए होगा, जेनरेट डीबी नाम (इस प्रक्रिया के लिए), और setUp()
विधि में हम मुख्य टेस्टडीबी को क्लोन कर सकते हैं अस्थायी एक लेकिन इससे पहले कि हम इस दृष्टिकोण को लागू करना शुरू करें, मैं विषय के बारे में आपके विचारों के बारे में पूछना चाहता हूं।
इससे संबंधित एक प्रश्न (समानांतर XUnit के बारे में आम तौर पर): http://programmers.stackexchange.com/q/56092/58909 लेकिन फिर, कैसे-परीक्षण के साथ डेटाबेस वास्तव में tackled नहीं है। –
बहुत रोचक चर्चा। मुझे यह वाक्य विशेष रूप से हमारी परिस्थिति से संबंधित पाया गया है: _ "इन सभी को चारों ओर कोड किया जा सकता है, और सरल उदाहरण को काम करने के लिए tweaked किया जा सकता है। लेकिन ऐसा करना शायद मूल कार्यक्रम के लिए अनावश्यक है। थ्रेड-सुरक्षित कोड लिखने के लिए बस इतना आप यूनिट परीक्षण चला सकते हैं कई लोगों के लिए अनुचित है। इसलिए बहु-थ्रेडेड यूनिट परीक्षण वैकल्पिक अतिरिक्त रहना चाहिए। "_ –
मैं उन्हें अलग-अलग वीएम में चलाऊंगा। –