मैं बिट वेक्टर की तरह एक सरल विकसित करने के लिए इसका उपयोग करके TDD का अभ्यास करने की कोशिश कर रहा हूं। मैं स्विफ्ट का उपयोग कर रहा हूं, लेकिन यह एक भाषा-अज्ञेय प्रश्न है।
मेरे BitVectorएक है structकि दुकानों के लिए एक एकल UInt64, और प्रस्तुत करता है आप इसे एक संग्रह की तरह व्यवहार देता है कि इस पर एक API। विवरण ज्यादा मायने नहीं रखता है, लेकिन यह बहुत आसान है। उच्च 57 बिट्स स्टोरेज बिट्स हैं, और निचले 6 बिट्स "काउंट" बिट्स हैं, जो आपको बताता है कि वास्तव में कितने स्टोरेज बिट्स एक निहित मूल्य को स्टोर करते हैं।
अब तक, मेरे पास बहुत सरल क्षमताएं हैं:
- एक शुरुआती जो खाली बिट वैक्टर का निर्माण करता है
countप्रकार की एक संपत्तिIntisEmptyप्रकार की एक संपत्तिBool- एक समानता ऑपरेटर (
==)। NB: यहObject.equals()जावा में मान-समानता ऑपरेटर ऑपरेटर है , जावा में संदर्भ समानता ऑपरेटर नहीं==।
मैं चक्रीय निर्भरता के एक समूह में भाग रहा हूं:
मेरे इनिशलाइज़र का परीक्षण करने वाली इकाई परीक्षण को यह सत्यापित करने की आवश्यकता है कि नवनिर्मित
BitVector। ऐसा 3 तरीकों में से एक में कर सकते हैं:- चेक
bv.count == 0 - चेक
bv.isEmpty == true - जांच करे
bv == knownEmptyBitVector
विधि 1 पर निर्भर करता है
count, विधि 2 पर निर्भर करता हैisEmpty(जो स्वयं पर निर्भर करता हैcount, इसलिए इसका उपयोग करने का कोई मतलब नहीं है), विधि 3 पर निर्भर करता है==। किसी भी मामले में, मैं अलगाव में अपने इनिशियलाइज़र का परीक्षण नहीं कर सकता।- चेक
के लिए परीक्षण
countकी जरूरत है कुछ है, जो अनिवार्य रूप से मेरी प्रारंभकर्ता (रों) परीक्षण पर संचालित करने के लिएके कार्यान्वयन पर
isEmptyनिर्भर करता हैcountके कार्यान्वयन पर
==निर्भर करता हैcount।
मैं इस समस्या को आंशिक रूप से एक निजी एपीआई पेश करने में सक्षम था BitVectorजो मौजूदा बिट पैटर्न (एक UInt64) से निर्माण करता है । इसने मुझे किसी अन्य इनिशियलाइज़र के परीक्षण के बिना मूल्यों को इनिशियलाइज़ करने की अनुमति दी, ताकि मैं अपने तरीके से "बूट स्ट्रैप" कर सकूं।
मेरी यूनिट परीक्षणों के लिए सही मायने में यूनिट टेस्ट होने के लिए, मैं खुद को हैक्स का एक गुच्छा बनाकर पाता हूं, जो मेरे उत्पादों और परीक्षण कोड को काफी हद तक जटिल करता है।
इस प्रकार के मुद्दों के बारे में आप वास्तव में क्या सोचते हैं?
BitVectorइकाई परीक्षण के लिए एक बिल्कुल ठीक इकाई का आकार है और तुरंत अपने मुद्दों को हल करता है किBitVectorसार्थक परीक्षण करने के लिए सार्वजनिक सदस्यों को एक-दूसरे की आवश्यकता होती है।