D Language
इकाई का परीक्षण
खोज…
वाक्य - विन्यास
- unittest {...} - एक ब्लॉक जो केवल "unittesting" मोड में चलाया जाता है
- मुखर (<अभिव्यक्ति जो एक बूलियन का मूल्यांकन करती है>, <वैकल्पिक त्रुटि संदेश>)
सबसे ब्लॉक
टेस्ट स्थिर, बग-मुक्त अनुप्रयोगों को सुनिश्चित करने का एक शानदार तरीका है। वे एक इंटरैक्टिव प्रलेखन के रूप में काम करते हैं और कार्यक्षमता को तोड़ने के लिए बिना किसी डर के कोड को संशोधित करने की अनुमति देते हैं। डी, डी भाषा के भाग के रूप में unittest
ब्लॉक के लिए एक सुविधाजनक और देशी सिंटैक्स प्रदान करता है। डी मॉड्यूल में कहीं भी unittest
ब्लॉक का उपयोग स्रोत कोड की कार्यक्षमता का परीक्षण करने के लिए किया जा सकता है।
/**
Yields the sign of a number.
Params:
n = number which should be used to check the sign
Returns:
1 for positive n, -1 for negative and 0 for 0.
*/
T sgn(T)(T n)
{
if (n == 0)
return 0;
return (n > 0) ? 1 : -1;
}
// this block will only be executed with -unittest
// it will be removed from the executable otherwise
unittest
{
// go ahead and make assumptions about your function
assert(sgn(10) == 1);
assert(sgn(1) == 1);
assert(sgn(-1) == -1);
assert(sgn(-10) == -1);
}
बिना सोचे समझे प्रदर्शन करना
यदि- -unittest
ध्वज को डी कंपाइलर को पास किया जाता है, तो यह सभी अनइंस्टॉल ब्लॉक को चलाएगा। अक्सर यह संकलक को main
फ़ंक्शन को उत्पन्न करने देने के लिए उपयोगी होता है। rdmd
एंड रन रैपर rdmd
का उपयोग करके, अपने डी प्रोग्राम का परीक्षण करना जितना आसान हो जाता है:
rdmd -main -unittest yourcode.d
यदि आप चाहें तो इस प्रक्रिया को भी दो चरणों में विभाजित कर सकते हैं:
dmd -main -unittest yourcode.d
./yourcode
dub
परियोजनाओं के लिए सभी फाइलों को संकलित करने और उनके सबसे अच्छे ब्लॉक को निष्पादित करने के लिए आसानी से किया जा सकता है
dub test
प्रो टिप: टिपिंग को बचाने के लिए शेल उपनाम के रूप में `tdmd` को परिभाषित करें।
alias tdmd="rdmd -main -unittest"
और फिर अपनी फ़ाइलों का परीक्षण करें:
tdmd yourcode.d
अनायास ही अंकित
टेम्प्लेटेड कोड के लिए यह सत्यापित करना अक्सर उपयोगी होता है कि फ़ंक्शन विशेषताओं के लिए (जैसे @nogc
सही ढंग से अनुमान लगाया गया है। एक विशिष्ट परीक्षण के लिए यह सुनिश्चित करने के लिए और इस प्रकार संपूर्ण यूनीटेस्ट को एनोटेट किया जा सकता है।
@safe @nogc pure nothrow unittest
{
import std.math;
assert(exp(0) == 1);
assert(log(1) == 0);
}
ध्यान दें कि डी में प्रत्येक ब्लॉक को विशेषताओं और संकलक के साथ एनोटेट किया जा सकता है, ज़ाहिर है, यह सत्यापित करता है कि वे सही हैं। इसलिए उदाहरण के लिए ऊपर दिए गए उदाहरण के समान होगा:
unittest
{
import std.math;
@safe {
assert(exp(0) == 1);
assert(log(1) == 0);
}
}