Test Driven

הפעם אני לא אכתוב קוד, אני רק אראה קוד שמישהו אחר כתב, אבל בלתי אפשרי להסתדר בלי התוכנה הקטנה הזאת...
מדובר על התוכנה Test Driven שבשיא הפשטות ניתן להגיד שהיא בסך הכל מריצה עבורכם את הקוד ישירות מסביבת הפיתוח. מה? כן, כמו שזה נשמע, לחצן ימני על הפונקציה שעכשיו כתבתם, לחיצה על Run Test והפרוייקט מתקמפל, הפונקציה מופעלת והכל נסגר.
ועדיין אולי לא ראיתם את היתרון, אבל עכשיו תראו... כמה פעמים כתבנו class libraies? Dllים שאמורים לשמש תוכניות אחרות, ואז כדי לבדוק אותם בזריזות כתבנו איזה WinForm שיריץ אותם? אז זה כל העניין, כעת ברוב הפעמים אני לא אצטרך את זה! כי התוכנה מריצה גם Dllים שהם ספריות.

טוב בואו נתחיל, קודם נוריד את התוכנה מהאתר שלהם

נסגור את ויז'ואל סטודיו, נריץ את ההתקנה ונפתח את ויז'ואל סטודיו שוב. לחצן ימני יראה לנו את האפשרויות:

test driven

כפי שניתן לראות, וגם זה צוין בעת ההתקנה, התוכנה תומכת גם בפריימורקס אחרים לביצוע בדיקות ומבחני קוד כגון NUnit שעליה כבר דיברנו

ועכשיו סתם דוגמה קטנה שיהיה נחמד, נניח שבמחלקה שלי יש פונקציה עם איזה אלגוריתם מסובך, במקום כל פעם לבנות מחדש את כל הפרויקט , להריץ ולבדוק בדיבוג את האלגוריתם אני יכול פשוט להריץ אותו ישירות. ומה אם הפונקציה מקבלת פרמטרים? אז נוסיף לקוד פונקציה נוספת שנקרא לה בשם Tester לדוגמה, למהדרין ביננו ניתן להקיף אותה בהוראות לקומפיילר שרק בדיבוג יכלול את הפונקציה הזאת (#if DEBUG.... #endif)
בפונקציה הזאת אני אריץ את הפונקציה המסובכת ואשלח לה פרמטרים. את התוצאה ניתן או להדפיס דרך Debug.Write("aa") ואז נראה את התוצאות בחלון הלבן הקטנצ'יק שמראה לנו את כל השגיאות בקימפול תמיד, או להגדיר שפונקציית הטקסט שלנו מחזירה ערך, ואז Test Driven ידפיס את הערך הזה בעצמו בחלון הקטנצ'יק הזה...
שימו לב שאם הפונקציה שאנו רוצים להריץ היא לא סטטית, אז אנחנו צריכים לספק גם בנאי ללא פרמטרים למחלקה שבה רצה הפונקציה, כדי ש TestDriven תוכל ליצור אובייקט מהמחלקה הזאת, או לחילופין פונקציה הבדיקה עצמה יכולה להיות סטטית והיא תיצור מופע חדש מהמחלקה שאותה אנו רוצה לבדוק ותקרא לפונקצית המטרה.

public class MyClass
{
#if DEBUG
    public static void Tester1()//this is for the static method test
    {
        int result=MyClass.DoMath(3,5);
        System.Diagnostics.Debug.WriteLine(result);
    }
#endif
    public static int DoMath(int a, int b)
    {
        return a * b;//this is my complicated algorithm
    }
}

טוען נתונים...
אהבתם?
המליצו לאחרים!

נהניתם? בעיות? הערות?
אני רוצה לשמוע!
rss feed