कुछ अव्यवस्थित विचार:
यह जुड़नार (के साथ या बिना डाटाबेस संरचना) के लिए अच्छा है, हर परीक्षण के स्टार्टअप() में db में लोड। यह यानी आ सकता है। JSON या XML फ़ाइलों से, प्रत्येक तालिका के लिए एक। यदि आप इसे GetNthFixture ($ sTable, $ nIndex) या countFixtures ($ sTable) जैसे कार्यों के साथ जोड़ते हैं, तो आप आसानी से अपने प्रश्नों का परीक्षण कर सकते हैं। इससे भी आगे, आप [LINQ] [1] का उपयोग कर सकते हैं ताकि डीबी & फिक्स्चर क्वेरी के बीच फिक्स्चर के सेट से अपेक्षाकृत परिणाम प्राप्त हो सकें। मुझे प्रारंभिक प्रोटोटाइप/विकासशील चरण में अनुकूलन करना बहुत आसान लगता है, जब डीबी संरचना अक्सर बदलती जा रही है। डीबी क्वेरी परिणाम के साथ सीधे LINQ क्वेरी परिणाम की तुलना करने के लिए दावे जोड़ना परीक्षणों को शुद्ध खुशी बनाता है;)
एक और संकेत: डीबी परीक्षण परीक्षण से पहले नहीं, प्रत्येक परीक्षण विधि से पहले पुनर्नवीनीकरण किया जाना चाहिए। आदर्श रूप से आपको आधार छोड़ना चाहिए और इसे फिक्स्चर के पूर्ण सेट से पुनर्निर्माण करना चाहिए।
और, यदि आप कर सकते हैं, तो विभिन्न डेटाबेस के साथ काम करने वाले परीक्षण करने का प्रयास करें (कुछ चीजें, निश्चित रूप से पोर्टेबल नहीं हैं, लेकिन बहुमत है)। Mysql/postgres/other_big_rdbm से कम से कम वर्गमीटर का उपयोग करें।
यदि आप ढांचे या अन्य जटिल प्रणाली का परीक्षण कर रहे हैं, तो आपको शायद डेटाबेस एक्सेस सिंगलॉन का नकल करना चाहिए। अगर कुछ हार्डकोडेड सामान को इतनी लचीला-ओम में गहरा दफनाया जाता है, तो यह दर्द हो सकता है, कहें, गर्दन।
अच्छा विचार उन सभी प्रश्नों को लॉग करना है जो परीक्षा उत्तीर्ण नहीं हुईं, और/या असफल संदेशों में उन्हें प्रदर्शित करने के लिए। डीबी त्रुटि संदेशों के लिए भी। यदि आप एक चिंता का विषय है तो बड़े डेटाबेस का परीक्षण कर रहे हैं, तो एक ही समय में धीमे प्रश्नों को लॉग करने का प्रयास करें।
अधिक जादुई और शायद थोड़ा कठिन, परीक्षण स्वचालित करने के लिए है कि सभी कॉलम कहां/जोड़/शामिल होते हैं। हो सकता है कि यूनिट परीक्षणों के बजाय जोसेड पीएचपी/डाटाबेस कोड स्निफर (टीएम) से संबंधित होना चाहिए, और लागू करने के लिए बहुत आसान नहीं है, लेकिन एक बार इस्तेमाल होने पर कोड की गुणवत्ता का आश्वासन मिलता है।
दुखद व्यक्तिगत अनुभव से जाने वाली एक और अच्छी सलाह: हमेशा बहुत से अलग-अलग भाषाओं के साथ काम करते हुए, विशेष रूप से बहुत से अलग-अलग भाषाओं के साथ परीक्षण जोड़ें।ISO-8859-1 दुनिया बहुत छोटी है;)
[1]: http://phplinq.codeplex.com/ LINQ
[क्या का उपयोग कर कार्यक्षमता डेटाबेस के लिए इकाई परीक्षण बनाने के लिए मानक/सर्वोत्तम प्रथाओं रहे हैं?] (Http के
संभव डुप्लिकेट: // stackoverflow .com/प्रश्न/3560116/क्या-मानक-सर्वोत्तम-प्रथाओं के लिए-बनाने-इकाई-परीक्षण-कार्यक्षमता-उपयोग करने के लिए) – Gordon
गॉर्डन, मैंने वास्तव में यह प्रश्न विशेष रूप से *** लिखा क्योंकि *** वहां उत्तर बहुत गहराई में नहीं लगते हैं, न ही डेटाबेस परीक्षण पर 'PHPUnit' अध्याय संदर्भित करता है। मैं इस पर और अधिक देखना चाहता हूं। –
चीजों को स्पष्ट करने के लिए: आपके पास एक ज्ञात इनपुट के आधार पर डीबी पर कुछ क्वेरी (या क्वेरी) करने का कार्य है। यह परिणाम देगा और अब आप यह जांचना चाहते हैं कि क्या परिणाम आप उम्मीद करेंगे? यदि ऐसा है: तो एक ज्ञात राज्य से शुरू करें (जहां आप यह भी जानते हैं कि वास्तविक परिणाम क्या होना चाहिए) एक अच्छी शुरुआत होगी (और यही वह है जो वे सभी डुप्लिकेट प्रश्न में संदर्भित करते हैं)। बस इस ज्ञात राज्य को हर टेस्ट रन पर पुनर्स्थापित करें। – wimvds