रस्ट परीक्षण शुरुआत से: पागल हुए बिना पहला परीक्षण कैसे लिखें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

रस्ट में परीक्षण डरावना नहीं, बल्कि दिलचस्प क्यों है?

\n\n

जब आप रस्ट सीखना शुरू करते हैं, तो ऐसा लगता है कि कंपाइलर आपके लिए सारा गंदा काम कर रहा है। वह मेमोरी की जाँच करता है, उधार लेने पर नज़र रखता है और आपको अपने पैर में गोली मारने से रोकता है। लेकिन सबसे सख्त कंपाइलर भी प्रोग्राम के तर्क की जाँच नहीं कर सकता। यहीं पर परीक्षण मदद के लिए आता है।

\n\n

कई शुरुआती लोग परीक्षणों से डरते हैं। उन्हें लगता है कि यह समय की बर्बादी है, कि उन्हें बहुत सारा उबाऊ कोड लिखना होगा। लेकिन वास्तव में, परीक्षण आपका बीमा हैं। वे बग्स को जल्दी खोजने, आत्मविश्वास से कोड को रिफैक्टर करने और रिलीज़ के बाद शांति से सोने में मदद करते हैं।

\n\n

इस लेख में, हम देखेंगे कि यदि आप शुरुआती हैं तो रस्ट में परीक्षण कैसे शुरू करें। कोई बेकार की बात नहीं - केवल अभ्यास, वास्तविक उदाहरण और सुझाव जो वास्तविक परियोजनाओं में काम आएंगे।

\n\n

शुरू करने से पहले क्या जानना चाहिए?

\n\n

परीक्षण लिखने से पहले, सुनिश्चित करें कि आपके पास Rust स्थापित है। यदि नहीं, तो टर्मिनल खोलें और निष्पादित करें:

\n\n
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
\n\n

हमें जो कुछ भी चाहिए वह पहले से ही इकोसिस्टम में बनाया गया है। किसी अतिरिक्त फ्रेमवर्क को स्थापित करने की आवश्यकता नहीं है। Rust एक शक्तिशाली अंतर्निहित टेस्ट रनर प्रदान करता है, जो एक कमांड से चलता है।

\n\n

प्रयोगों के लिए एक नया प्रोजेक्ट बनाएँ:

\n\n
cargo new rust_test_guide\ncd rust_test_guide
\n\n

बढ़िया! अब हमारे पास एक साफ प्रोजेक्ट है जिसमें हम परीक्षण लिखना सीखेंगे।

\n\n

पहला परीक्षण: एक उदाहरण के साथ समझें

\n\n

फ़ाइल src/lib.rs खोलें। डिफ़ॉल्ट रूप से यह खाली है, लेकिन हम इसमें एक सरल फ़ंक्शन और उसका परीक्षण जोड़ेंगे।

\n\n

चलिए एक फ़ंक्शन लिखते हैं जो जाँचता है कि कोई संख्या सम है या नहीं:

\n\n
pub fn is_even(num: i32) -> bool {\n    num % 2 == 0\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n\n    #[test]\n    fn test_is_even() {\n        assert_eq!(is_even(4), true);\n        assert_eq!(is_even(7), false);\n    }\n}
\n\n

कोड को भागों में समझें:

\n\n
    \n
  • #[cfg(test)] — यह विशेषता कंपाइलर से कहती है: "इस मॉड्यूल को केवल परीक्षण चलाते समय संकलित करें।" यह अंतिम बिल्ड में शामिल नहीं होगा।
  • \n
  • mod tests — हम परीक्षणों के लिए एक मॉड्यूल बनाते हैं। यह मानक अभ्यास है।
  • \n
  • use super::*; — ऊपर घोषित सब कुछ आयात करता है ताकि हम अपने is_even फ़ंक्शन को देख सकें।
  • \n
  • #[test] — एक मार्कर जो एक सामान्य फ़ंक्शन को परीक्षण में बदल देता है।
  • \n
  • assert_eq! — एक मैक्रो जो दो मानों की समानता की जाँच करता है। यदि वे समान नहीं हैं, तो परीक्षण विफल हो जाता है।
  • \n
\n\n

परीक्षण को कमांड से चलाएँ:

\n\n
cargo test
\n\n

यदि सब कुछ सही है, तो आपको हरा आउटपुट दिखाई देगा:

\n\n
running 1 test\ntest tests::test_is_even ... ok\n\ntest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
\n\n

बधाई हो, आपने अपना पहला Rust परीक्षण लिखा है! अब देखते हैं कि अधिक सार्थक जाँच कैसे लिखें।

\n\n

परीक्षण के लिए मुख्य मैक्रोज़

\n\n

परीक्षणों में आप लगातार तीन मैक्रोज़ का उपयोग करेंगे। उन्हें याद रखें:

\n\n
    \n
  • assert!(expression) — जाँचता है कि अभिव्यक्ति सत्य है। यदि असत्य है, तो परीक्षण विफल हो जाता है।
  • \n
  • assert_eq!(left, right) — दो मानों की समानता की जाँच करता है। परिणामों की तुलना करने के लिए सुविधाजनक।
  • \n
  • assert_ne!(left, right) — जाँचता है कि मान समान नहीं हैं।
  • \n
\n\n

तीनों मैक्रोज़ के उपयोग का उदाहरण:

\n\n
pub fn add_two(x: i32) -> i32 {\n    x + 2\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n\n    #[test]\n    fn test_add_two() {\n        assert!(add_two(3) == 5);\n        assert_eq!(add_two(0), 2);\n        assert_ne!(add_two(10), 13);\n    }\n}
\n\n

ध्यान दें: assert! एक बूलियन अभिव्यक्ति लेता है, और

ब्लॉग

पुस्तक अनुशंसाएँ