मैं एक ही प्रश्न के साथ इस पृष्ठ पर आया, हालांकि स्वीकार्य उत्तर सभी वर्गों पर चलाया गया है, और मेरे लिए सही जवाब नहीं था।
यदि आप मेरे जैसे हैं, तो आपका पहला "एकीकरण परीक्षण" डीबी को साफ़ करना और माइग्रेशन चलाएं। यह सभी परीक्षणों के लिए डेटाबेस बेसलाइन पर स्वयं को प्राप्त करता है। मैं इस बिंदु पर लगातार माइग्रेशन फाइलों को बदल रहा हूं, इसलिए बेसलाइन सेट करना वास्तव में सभी परीक्षणों का हिस्सा है।
माइग्रेशन में कुछ समय लगता है, इसलिए मैं नहीं चाहता कि यह सभी परीक्षणों पर चलता है।
तब मुझे प्रत्येक टुकड़े डेटाबेस परीक्षण का निर्माण करने की आवश्यकता थी। मुझे ऑर्डर टेस्ट लिखना होगा, लेकिन पहले मुझे कुछ उत्पाद बनाने और परीक्षण करने की ज़रूरत है, फिर मुझे एक आयात फक्शन का परीक्षण करने की आवश्यकता है।
तो, मैंने जो किया वह सुपर आसान है, लेकिन इंटरनेट पर बहुत अच्छी तरह से समझाया नहीं गया है। मैंने डेटाबेस सेटअप करने के लिए एक सरल परीक्षण बनाया। फिर अपने phpspec.xml फ़ाइल में एक testsuite जोड़ें ....
<testsuite name="Products">
<file>tests/in/SystemSetupTest.php</file>
<file>tests/in/ProductTest.php</file>
<file>tests/in/ProductImportTest.php</file>
</testsuite>
और SystemSetupTest.php में ....
class SystemSetupTest extends ApiTester
{
/** @test */
function system_init()
{
fwrite(STDOUT, __METHOD__ . "\n");
self::createEM(); //this has all the code to init the system...
}
}
फिर इसे पसंद निष्पादित करें:
PHPUnit - -स्टेस्टाइट उत्पाद
अंत में, यह एक टन आसान है। यह मुझे अपने सिस्टम को सही तरीके से बनाने की अनुमति देगा।
इसके अतिरिक्त मैं लार्वेल का उपयोग कर रहा हूं 5. setUpBeforeClass()
का उपयोग करते समय मैं बूटस्ट्रैप समस्याओं के साथ समाप्त होता हूं, जो मुझे यकीन है कि मैं ठीक कर सकता हूं, लेकिन ऊपर दी गई विधि सही काम करती है।
मैं प्रदर्शन के लिए कभी-कभी ऐसा करने की आवश्यकता को पूरी तरह से समझता हूं। यदि संभव हो तो इससे बचने की अनुशंसा की जाती है ताकि आप परीक्षणों के बीच राज्य साझा नहीं कर रहे हों। –
@ ग्रेग: मैं सहमत हूं। फिर भी, ऐसी स्थितियां हैं जहां सभी परीक्षणों के लिए एक बार आरंभ करना बेहतर होता है (उदाहरण के लिए डीबी से कनेक्शन स्थापित करना)। – snakile
मैं अपने डेटामैपर में ज़ेंड_Db/PDO एडाप्टर को मजाक कर एक डीबी सर्वर की आवश्यकता से बचने की कोशिश करता हूं, फिर मैं अपने वर्गों के एसक्यूएल पर एसक्यूएल पर दावा करता हूं। मैं कभी-कभी कार्यात्मक/अंत-टू-एंड परीक्षणों के लिए अपरिहार्य की सराहना करता हूं। –