בחלקו הראשון של המדריך, הורדנו והתקנו את ה-Visual Studio , הורדנו והתקנו את NUnit , כעת נראה כיצד אנו מתקדמים עם הבדיקות
הכרת ה-NUnit , מודול ה-GUI
אז דבר ראשון שנראה כשנפתח את קובץ ההפעלה של NUnit יהיה המסך הבא:
בחלון השמאלי (עם הרקע הלבן) אנו אמורים לראות את הטסטים שאנו ניצור בקוד.
מצד ימין מלמעלה יש לנו שני כפתורים Run / Stop , להריץ או לסיים ריצה של טסט , השורה הבודדת תחת הכפתורים תראה לנו את מצב הריצה לאחר סיומה (קו ירוק או אדום)
החלון הימני התחתון מחולק לשלושה טאבים, טאב ה-Text Output הוא למעשה ה-Console שלנו , כך שאם נקודד את השורה Console.WriteLine הטקסט יוצג כאן. הטאב Tests Not Run די מסביר את עצמו לפי השם , והטאב Errors and Failures גם כן מתחלק לשניים, שם נוכל לנתח את מקור הנפילה במידה ותהיה כזאת (נראה זאת בהמשך)
בשביל לשייך את הפרוייקט שלנו לאפליקציה , נקיש על File -> Open Project ובחלון ה-Browse שייפתח לנו , ננווט למיקום הפרוייקט שלנו ונבחר את קובץ ה-DLL שיווצר לנו לאחר הקימפול הראשון , בדרך כלל ה-DLL ישב תחת Project Folder\bin\Debug , בשלב זה עדיין לא כתבנו שורת קוד אחת בפרוייקט אז אין לנו כרגע קובץ DLL לטעון. נעשה זאת בהמשך.
הכרת ה-NUnit , מודול הספריה
לפני שנלמד כיצד לעבוד עם ספריית ה-NUnit , בואו קודם נשייך אותה לפרוייקט שלנו, אז תחת הפרוייקט נקליק על המקש הימני של העכבר על Preferences ונבחר את האופציה הראשונה – Add Reference :
בחלון הבא נקיש על Browse
וננווט דרך מנהל הקבצים אל המיקום בו התקנו את ה-Nunit , שם, תחת ספריית bin\framework קיים קובץ nunit.framework.dll , נבחר אותו.
כעת הקבצים המשוייכים לפרוייקט הם קבצי הסלניום שהורדנו בסעיף השני (חלק א) וקובץ ה-NUnit:
ה-Nunit , כמו ה-JUnit שתומכת באנוטציות, תומכת גם כן בחלוקת הקוד למקטעי בדיקה , החלוקה הזאת נעשית בעזרת Attributes , לסביבה יש כמה Attributes שונים עליהם ניתן ללמוד בהרחבה בדוקומנטציה של הפרוייקט.
בכל מקרה , ה-Attributes החשובים לנו בטסטים הם:
[TestFixture] – בא לפני הצהרת המחלקה ומודיע לקומפיילר כי מחלקה זו היא מסוג Unit Testing
[TestFixtureSetUp] – מודיע לקומפיילר להריץ את הפונקציה הזאת תחילה , מקביל ל-beforeClass@
[TestFixtureTearDown] – מודיע לקומפיילר להריץ את הפונקציה הזאת בסיום , מקביל ל-afterClass@
[Test] – מודיע לקומפיילר כי זהו טסט בר הרצה , אותו נראה אח"כ ברשימת הטסטים ב-GUI של NUnit
כתיבת טסט ב-NUnit
נכתוב כעת מקרה בדיקה עם NUnit בסלניום, המקרה עצמו די פשוט , נכנס לאתר: https://atidcollege.co.il/Xamples/bmi (שהצגתי כבר בכמה הזדמנויות בפוסטים שלי) , נכניס משקל , גובה , נלחץ על Calculate ונבדוק כי התוצאה המתקבלת הינה התוצאה שקיוונו לה.
אז תחילה ניצור רפרנס לספריות שלנו בפרוייקט, מדובר על ספריות הסלניום וה-NUnit:
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
ונכתוב את ה-Attributes שלנו , כך:
ונכתוב את הטסט ב- #C:
using System; using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; namespace NunitTest { [TestFixture] public class TestClass { private IWebDriver driver; [TestFixtureSetUp] public void LoadDriver() { ChromeOptions options = new ChromeOptions(); options.AddArgument("--start-maximized"); options.AddExcludedArgument("ignore-certificate-errors"); driver = new ChromeDriver(@"C:\Selenium\", options); driver.Navigate().GoToUrl("https://atidcollege.co.il/Xamples/bmi"); driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(20)); Console.WriteLine("SetUp Finished Successfully"); } [TestFixtureTearDown] public void UnloadDriver() { driver.Quit(); Console.WriteLine("TearDown Finished Successfully"); } [Test] public void Test1() { driver.FindElement(By.Id("weight")).SendKeys("60"); driver.FindElement(By.Name("height")).SendKeys("200"); driver.FindElement(By.Id("calculate_data")).Click(); String ActualResult = driver.FindElement(By.Id("bmi_result")).GetAttribute("value"); Assert.AreEqual("15", ActualResult); } } }
כעת נקמפל את הפרוייקט שלנו : נקיש על BUILD -> Rebuild
ונעבור בחזרה אל אפליקציית ה-NUnit . באפליקציה נקיש על File -> Open Project , ונבחר את ה-DLL החדש שנוצר לנו עם קימפול הקוד , ישב לנו תחת ספרית הפרוייקט תחת bin\Debug.
כעת רשימת הטסטים אמורה לכלול את הטסט שאנו זה עתה קימפלנו:
נריץ את הטסט (כפתור ה-Run) ונראה את דפדפן הכרום נפתח ומתחיל "לעבוד". בסיום הטסט אנו אמורים לקבל חיווי מה-NUnit על מצב הריצה , במקרה שלנו הריצה אמורה לעבור בהצלחה וזה מה שנראה על מסך:
כעת בואו ננסה להכשיל את הטסט , על ידי זה שנשנה את פקודת ה-Assert , כך שההשוואה תיפול , ב-Expected נרשום את הערך "16" במקום "15"
Assert.AreEqual("16", ActualResult);
נריץ שוב ונראה את התוצאה:
ה-NUnit דואג להראות לנו בדיוק באיזו שורת קוד הטסט נפל וגם על מה הוא נפל