2011-07-18 10 views
19

मैं एक एसओए सिस्टम के लिए कार्यात्मक परीक्षण लिख रहा हूं इसलिए फ्रंटेंड से बैकएंड उपप्रणाली का परीक्षण करने की आवश्यकता है।phpunit परीक्षणों के बीच आवृत्ति चर को संरक्षित करने का कोई तरीका?

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

मैं इसे कैसे प्राप्त कर सकता हूं? आर्किटेक्चर में प्रत्येक सर्वर पर कार्यात्मक परीक्षण चलाना एक विकल्प नहीं है।

+3

एक बात करने के लिए ध्यान रखें कि PHPUnit किसी परीक्षण को निष्पादित करने से पहले प्रत्येक परीक्षण विधि * के लिए आपके परीक्षण मामले का एक नया उदाहरण बनाता है। * –

+3

ध्यान में रखना एक बात यह है कि PHPUnit में ** खराब डिज़ाइन ** है ... – inf3rno

उत्तर

0

मुझे लगता है कि मैं 'संपादन' या 'हटाएं' चलाने से पहले 'निर्माण' परीक्षण चलाऊंगा, और उसके अनुसार इंस्टेंस वैरिएबल सेट करूँगा।

32

एक तरह से परीक्षण के बीच सामान पारित करने के लिए @depends एनोटेशन का उपयोग करने के

public function testCreate() { 
    //... 
    return $id; 
} 

/** 
* @depends testCreate 
*/ 
public function testDelete($id) { 
    // use $id 
} 

यदि आप इसे की तरह है कि "हटाएँ" परीक्षण करता है, तो निर्माण काम नहीं करता छोड़ दिया जाएगा करते हैं।

तो आपको केवल एक त्रुटि मिलेगी यदि सेवा कई असफल परीक्षणों के बजाय बिल्कुल काम नहीं करती है।


आप ऐसा नहीं करना चाहते हैं या उसके लिए जो भी कारण स्थिर वर्ग चर भी एक विकल्प हो सकता है आपके मामले से मेल नहीं खाता है, लेकिन क्या तुम सच में यकीन है कि तुम क्या आप जानते हैं निश्चित रूप से आवश्यकता होना चाहिए, तो:)

+0

मेरे पास बिल्कुल वही विधि नाम हैं जिनके लिए मैं समाधान ढूंढ रहा था: D – Jekis

4

जब से तुम एक बार प्रत्येक testcase चलाना चाहते हैं, तो आप चाबी के लिए get_class($testCase) का उपयोग करता है स्थैतिक चर में उदाहरण के लिए, या एक बाहरी सिंगलटन/वैश्विक दुकान में कक्षा स्तर पर उदाहरण चर स्टोर कर सकते हैं ...

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