इसलिए, मेरे पास एक प्रमाणीकरण मॉड्यूल है जिसे मैंने कुछ समय पहले लिखा था। अब मैं अपने तरीके की त्रुटियों को देख रहा हूं और इसके लिए इकाई परीक्षण लिख रहा हूं। इकाई परीक्षण लिखते समय, मेरे पास परीक्षण करने के लिए अच्छे नामों और अच्छे क्षेत्रों के साथ आने वाला कठिन समय है। मसलन, मेरे पास चीजें हैं
- RequiresLogin_should_redirect_when_not_logged_in
- RequiresLogin_should_pass_through_when_logged_in
- Login_should_work_when_given_proper_credentials
व्यक्तिगत रूप से, मुझे लगता है कि यह थोड़ा बदसूरत है, भले ही यह "उचित" लगता है। मुझे केवल उन पर स्कैन करके परीक्षणों के बीच अंतर करने में परेशानी होती है (मुझे यह जानने के लिए कम से कम दो बार विधि का नाम पढ़ना होगा)
इसलिए, मैंने सोचा कि शायद परीक्षण लिखने के बजाय विशुद्ध रूप से कार्यक्षमता का परीक्षण करें, हो सकता है कि परीक्षण का एक सेट लिखें जो परिदृश्यों को कवर करते हैं।
उदाहरण के लिए, यह एक परीक्षण स्टब है जिसे मैं लेकर आया था:
public class Authentication_Bill
{
public void Bill_has_no_account()
{ //assert username "bill" not in UserStore
}
public void Bill_attempts_to_post_comment_but_is_redirected_to_login()
{ //Calls RequiredLogin and should redirect to login page
}
public void Bill_creates_account()
{ //pretend the login page doubled as registration and he made an account. Add the account here
}
public void Bill_logs_in_with_new_account()
{ //Login("bill", "password"). Assert not redirected to login page
}
public void Bill_can_now_post_comment()
{ //Calls RequiredLogin, but should not kill request or redirect to login page
}
}
क्या यह पैटर्न के बारे में सुना है? मैंने स्वीकृति की कहानियां और ऐसी देखी हैं, लेकिन यह मौलिक रूप से अलग है। बड़ा अंतर यह है कि मैं परिक्षणों को "बल" देने के लिए परिदृश्यों के साथ आ रहा हूँ। मैन्युअल रूप से संभव इंटरैक्शन के साथ आने की कोशिश करने के बजाय जिसे मुझे परीक्षण करना होगा। इसके अलावा, मुझे पता है कि यह यूनिट परीक्षणों को प्रोत्साहित करता है जो बिल्कुल एक विधि और वर्ग का परीक्षण नहीं करते हैं। मुझे लगता है कि यह ठीक है, हालांकि। इसके अलावा, मुझे पता है कि यह कम से कम कुछ परीक्षण ढाँचों के लिए समस्याएँ पैदा करेगा, क्योंकि वे आमतौर पर यह मानते हैं कि परीक्षण एक-दूसरे से स्वतंत्र हैं और आदेश कोई फर्क नहीं पड़ता (जहां यह इस मामले में होगा)।
वैसे भी, क्या यह एक उचित पैटर्न है? या, यह "यूनिट" परीक्षणों के बजाय मेरे एपीआई के एकीकरण परीक्षणों के लिए एक सही फिट होगा? यह सिर्फ एक व्यक्तिगत परियोजना में है, इसलिए मैं उन प्रयोगों के लिए खुला हूं जो अच्छी तरह से हो सकते हैं या नहीं।
_test
और टिप्पणियों का उपयोग करता हूं यह नोट करने के लिए कि मुझे क्या परिणाम चाहिए। यदि यह एक व्यक्तिगत परियोजना है, तो कुछ ऐसी शैली ढूंढें जिसे आप सहज महसूस करते हैं और उसी से चिपके रहते हैं।