मुझे लगता है कि यह आम तौर पर ठीक है (मैं इसे दोहराने से बचने के लिए अपने एसक्यूएल के लिए एक स्ट्रिंग स्थिरता पेश करता हूं, बीटीडब्ल्यू)।
बेशक, एक चीज जिसका आप परीक्षण नहीं कर रहे हैं वह डेटाबेस के साथ वास्तविक बातचीत है (क्योंकि यह मजाक कर रहा है)। तो मैं एक संबंधित परीक्षण (या सेट?) की अपेक्षा करता हूं जो वास्तव में डाटाबेस के साथ पर इंटरैक्ट करता है, और उपयुक्त/रोलबैक उचित के रूप में। अन्यथा आप कुछ परीक्षण कर रहे हैं (फिलहाल) काफी तुच्छ है।
परीक्षण संगठन पर एक नोट। नीचे 2 चीजें परीक्षण (शून्य निर्माण विफल रहता है, और सामान्य निर्माण सफल होता है)। मैं इसे दो परीक्षणों में विभाजित कर दूंगा, अन्यथा यदि पहला खंड विफल रहता है, तो आप कभी भी दूसरे खंड का परीक्षण नहीं करते हैं (अधिक जटिल परिदृश्यों में, यह गलती निदान को और अधिक कठिन बनाता है, क्योंकि आपके पास जितना आवश्यक सबूत नहीं हो सकता है)
public void testPostDAO() {
try {
new PostDAO(null);
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException ex) {}
new PostDAO(connectionMock);
}
कुछ लोग इसकी छोटीता के कारण new PostDAO(null)
का परीक्षण करने के लिए ऑब्जेक्ट करते हैं। मैं असहमत हूं। परीक्षण लिखने के कारणों में से एक यह सुनिश्चित करना है कि व्यवहार तब तक नहीं बदलेगा जब तक आप इसे तक नहीं देखते। तो उपर्युक्त अच्छा है - मैं इसे दो स्पष्ट परीक्षणों में विभाजित कर दूंगा।
स्रोत
2009-07-12 10:20:16
पेस्टबिन लिंक मर चुके हैं। –
लिंक के बिना यह प्रश्न समझ में आता है। – Asgaroth
किसी भी कोड के बिना पालन करना मुश्किल है ... –