मेरे पास कई परीक्षण हैं जो एक MySQL डेटाबेस के विरुद्ध चलते हैं जो स्कीमा के साथ प्री-लोड किया गया है और SQL फ़ाइलों के सेट से उदाहरण डेटा है। इनमें से कुछ परीक्षण, उनके रन के दौरान, डेटाबेस में भी नया डेटा बनाते हैं।प्रारंभिक SQL फ़िक्स्चर के सापेक्ष किसी तालिका में परिवर्तन कैसे ढूंढें?
आम तौर पर, परीक्षण स्वयं के बाद सफाई के लिए ज़िम्मेदार होते हैं (और इस प्रकार अन्य परीक्षणों के लिए डेटाबेस वातावरण को प्रदूषित नहीं करते हैं)। हालांकि, ऐसा लगता है कि इनमें से कुछ परीक्षण पूरी तरह से ऐसा नहीं कर रहे हैं, और इस प्रकार अतिरिक्त/संशोधित रिकॉर्ड छोड़कर उन्हें नहीं जाना चाहिए।
परीक्षण किए जा रहे कोड के जटिल सेट के कारण, पूरे परीक्षण के लिए एक ही लेनदेन चलाना संभव नहीं है, इसलिए मेरे पास केवल MySQL रोल सब कुछ वापस नहीं हो सकता है (दोनों एकाधिक कर्सर हैं और कई कारकों के बीच कई प्रतिकृति डीबी सर्वर शामिल हैं)।
मैं और अधिक आसानी से इन परीक्षणों कि डीबी प्रदूषण कर रहे हैं की पहचान करने का एक तरीका है करना चाहते हैं, लेकिन क्योंकि यह परीक्षण डीबी लिखने के लिए के लिए (जब तक वे बातें बाद में हटाने के रूप में) स्वीकार्य है, मैं यह कर सकते हैं डीबी में सभी बदलावों को न देखें - मुझे केवल प्रभावी परिवर्तनों की आवश्यकता है, रद्द करने वाले संशोधनों को हटा दिया गया है।
एक विचार मैंने कहा था कि अगर एक टेबल की सामग्री की तुलना किसी अन्य के खिलाफ तुलना करने का एक सीधा तरीका था, तो मैं प्रत्येक परीक्षण को चलाने के बाद ऐसा कर सकता था, जो कि तालिका के सामग्रियों की तुलना में एक तालिका की सामग्री की तुलना करता था परीक्षण के बाद टेबल।
अतीत में उपयोग की जाने वाली एक विधि संख्यात्मक आधारित प्राथमिक कुंजी के लिए नकारात्मक मान असाइन करना था। परीक्षण डेटा से छुटकारा पाने में बहुत आसान: 'तालिका से हटाएं जहां आईडी <0' –
@OMG टट्टू: यह एक चालाक विचार है; मुझे यकीन नहीं है कि क्या हमारा कोडबेस इसका समर्थन करेगा (कुछ 'x> 0' et cetera आस-पास बैठे हो सकते हैं), लेकिन मैं निश्चित रूप से इसे ध्यान में रखूंगा। – Amber