מבוא ל- TestNG

1. סקירה כללית

במאמר זה נציג את מסגרת הבדיקות TestNG.

אנו נתמקד ב: הגדרת מסגרת, כתיבת מקרה תצורה פשוט ותצורה, ביצוע בדיקות, הפקת דוחות בדיקה וביצוע בדיקות במקביל.

2. התקנה

נתחיל בהוספה של התלות של Maven שלנו pom.xml קוֹבֶץ:

 org.testng testng 7.1.0 מבחן 

את הגרסה האחרונה ניתן למצוא במאגר Maven.

בעת שימוש ב- Eclipse, ניתן להוריד ולהתקין את תוסף TestNG משוק Eclipse.

3. כתיבת מקרה מבחן

כדי לכתוב מבחן באמצעות TestNG, אנחנו רק צריכים להוסיף הערה לשיטת הבדיקה org.testng.annotations.Test ביאור:

@Test ציבור בטל givenNumber_whenEven_thenTrue () {assertTrue (מספר% 2 == 0); }

4. בדיקות תצורות

בעת כתיבת מקרי מבחן, לעיתים קרובות עלינו לבצע הוראות תצורה או אתחול לפני ביצוע בדיקות, וכן ניקוי מסוים לאחר סיום המבחנים. TestNG מספק מספר תכונות אתחול וניקוי ברמת השיטה, הכיתה, הקבוצה והסוויטה:

@BeforeClass הגדרת חלל ציבורית () {number = 12; } @AfterClass חלל ציבורי דמעה () {number = 0; }

ה להכין() שיטת הערה עם @לפני השיעור ההערות יופעלו לפני ביצוע שיטות כלשהן מאותו מעמד הבדיקה, וכן לקרוע() לאחר ביצוע כל השיטות של כיתת המבחן.

באופן דומה, אנו יכולים להשתמש ב- @BeforeMethod, @AfterMethod, @ Before / AfterGroup, @ Before / AfterTest ו @ לפני / AfterSuite הערות לכל תצורה ברמת השיטה, הקבוצה, הבדיקה והסוויטה.

5. ביצוע מבחן

אנו יכולים להריץ את מקרי המבחן באמצעות פקודת "הבדיקה" של מייבן, היא תבצע את כל מקרי המבחן המוערים באמצעותם @מִבְחָן הצבתם לחבילת בדיקות ברירת מחדל אנו יכולים גם להריץ מקרי בדיקה מקבצי ה- XML ​​של חבילת הבדיקה TestNG, באמצעות תוסף maven-surefire:

 org.apache.maven.plugins maven-surefire-plugin 2.19.1 src \ test \ resources \ test_suite.xml 

שים לב שאם יש לנו מספר קבצי XML המכסים את כל מקרי הבדיקה, נוכל להוסיף את כולם ב- suiteXmlFiles תָג:

  src / test / resources / parametrized_test.xml src / test / resources / registration_test.xml 

על מנת להריץ את העצמאי לבדיקה, עלינו להחזיק את ספריית TestNG בנתיב הכיתה ובמחלקת הבדיקה המהודרת יחד עם קובץ התצורה של XML:

java org.testng.TestNG test_suite.xml

6. קיבוץ מבחנים

ניתן לבצע בדיקות בקבוצות, למשל מתוך 50 מקרי מבחן 15 ניתן לקבץ יחד ולהוציא אותם להשאיר אחרים כמו שהם.

בבדיקות קיבוץ TestNG בסוויטות נעשות באמצעות קובץ XML:

שימו לב לכך, גם שיעורי המבחן RegistrationTest, SignInTest כעת שייך לאותה סוויטה וברגע שהסוויטה מבוצעת, מקרי בדיקה בכיתה זו יבוצעו.

מלבד סוויטות הבדיקה, אנו יכולים ליצור קבוצות בדיקה ב- TestNG, כאשר במקום שיטות הבדיקה מקובצות יחד שיטות. על מנת לעשות זאת, הוסף את קבוצות פרמטר ב @מִבְחָן ביאור:

@Test (קבוצות = "רגרסיה") חלל ציבורי נתון NegativeNumber_sumLessthanZero_thenCorrect () {int sum = numbers.stream (). להפחית (0, שלם :: סכום); assertTrue (סכום <0); }

בואו נשתמש ב- XML ​​לביצוע הקבוצות:

פעולה זו תבצע את שיטת הבדיקה שתויגה עם הקבוצה נְסִיגָה, בתוך ה SummationServiceTest מעמד.

7. בדיקות פרמטריות

בדיקות יחידות פרמטריות משמשות לבדיקת אותו קוד בכמה תנאים. בעזרת בדיקות יחידה פרמטריות אנו יכולים להגדיר שיטת בדיקה שתשיג נתונים ממקור נתונים כלשהו. הרעיון העיקרי הוא להפוך את שיטת בדיקת היחידה לשימוש חוזר ולבדוק באמצעות מערך תשומות אחר.

ב- TestNG אנו יכולים לבצע פרמטריזציה של בדיקות באמצעות @פָּרָמֶטֶר אוֹ @ספק מידע ביאור. תוך שימוש בקובץ ה- XML ​​הוסף הערה לשיטת הבדיקה באמצעות @פָּרָמֶטֶר:

@Test @Parameters ({"value", "isEven"}) חלל ציבורי givenNumberFromXML_ifEvenCheckOK_thenCorrect (ערך int, בוליאני isEven) {assertEquals (isEven, ערך% 2 == 0); }
וספק את הנתונים באמצעות קובץ XML:

שימוש בנתונים מקובץ XML הוא שימושי, אך לעתים קרובות אנו זקוקים לנתונים מורכבים יותר. @ספק מידע הערה משמשת לטיפול בתרחישים אלה, אשר באמצעותם ניתן למפות סוגי פרמטרים מורכבים לשיטות בדיקה.@ספק מידע לסוגי נתונים פרימיטיביים:

@ DataProvider (name = "numbers") אובייקט סטטי ציבורי [] [] evenNumbers () {להחזיר אובייקט חדש [] [] {{1, false}, {2, true}, {4, true}}; } @Test (dataProvider = "numbers") חלל ציבורי givenNumberFromDataProvider_ifEvenCheckOK_thenCorrect (מספר שלם, צפוי בוליאני) {assertEquals (צפוי, מספר% 2 == 0); }

@ספק מידעלחפצים:

@Test (dataProvider = "numbersObject") חלל ציבורי givenNumberObjectFromDataProvider_ifEvenCheckOK_thenCorrect (מספר מספר שווה) {assertEquals (number.isEven (), number.getValue ()% 2 == 0); } @ DataProvider (name = "numbersObject") אובייקט ציבורי [] [] parameterProvider () {להחזיר אובייקט חדש [] [] {{EvenNumber חדש (1, לא נכון)}, {חדש EvenNumber (2, נכון)}, {חדש EvenNumber (4, נכון)}}; }

באמצעות זה, כל אובייקט שיש לבחון ניתן ליצור ולהשתמש בו במבחן. זה שימושי בעיקר למקרי מבחן אינטגרציה.

8. התעלמות ממקרי המבחן

לעיתים אנו רוצים שלא לבצע מקרה בדיקה מסוים, באופן זמני בתהליך הפיתוח. ניתן לעשות זאת בהוספה מופעלת= שקר, בתוך ה @מִבְחָן ביאור:

@Test (מופעל = שקר) חלל ציבורי givenNumbers_sumEquals_thenCorrect () {int sum = numbers.stream.reduce (0, Integer :: sum); assertEquals (6, סכום); }

9. מבחנים תלויים

בואו ניקח בחשבון תרחיש, שאם מקרה הבדיקה הראשוני נכשל, יש לבצע את כל מקרי הבדיקה הבאים, אלא לסמן אותם כמדלגים. TestNG מספק תכונה זו עם תלוי OnMethods פרמטר של @מִבְחָן ביאור:

@Test הציבור בטל givenEmail_ifValid_thenTrue () {בוליאני תקף = email.contains ("@"); assertEquals (תקף, נכון); } @Test (תלויOnMethods = {"givenEmail_ifValid_thenTrue"}) חלל ציבורי givenValidEmail_whenLoggedIn_thenTrue () {LOGGER.info ("דוא"ל {} תקף >> כניסה", דוא"ל); }

שימו לב, מקרה מבחן הכניסה תלוי במקרה של בדיקת אימות הדוא"ל. לפיכך, אם אימות הדוא"ל נכשל, דילוג על מבחן הכניסה.

10. ביצוע בדיקות במקביל

TestNG מאפשר בדיקות לרוץ במקביל או במצב רב-הברגה, ובכך מספק דרך לבדוק פיסות קוד מרובות-הברגה אלה.

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

10.1. שיעורים ושיטות במקביל

כדי להריץ שיעורי מבחן במקביל, הזכר את ה- מַקְבִּיל תכונה ב סְוִיטָה תג בקובץ תצורה של XML, עם ערך שיעורים:

שים לב שאם יש לנו מספר רב מִבְחָן תגים בקובץ XML, ניתן להריץ את הבדיקות הללו במקביל, על ידי אזכור מקביל = "מבחנים". גם לבצע שיטות אישיות במקביל, הזכיר מקביל = "שיטות".

10.2. ביצוע רב-הברגה של שיטת הבדיקה

נניח שעלינו לבדוק את התנהגות הקוד כאשר אנו פועלים במספר נושאים. TestNG מאפשר להריץ שיטת בדיקה במספר נושאים:

מחלקה ציבורית MultiThreadedTests {@Test (threadPoolSize = 5, invocationCount = 10, timeOut = 1000) חלל ציבורי givenMethod_whenRunInThreads_thenCorrect () {int count = Thread.activeCount (); assertTrue (ספירה> 1); }}

ה threadPoolSize מציין שהשיטה תפעל נ מספר האשכולות כאמור. ה invocationCount ו פסק זמן ציין שהבדיקה תבוצע מספר פעמים ותכשל בבדיקה אם זה ייקח יותר זמן.

11. בדיקות פונקציונליות

TestNG מגיע עם תכונות שניתן להשתמש בהם גם לבדיקות פונקציונליות. בשילוב עם סלניום, ניתן להשתמש בו לבדיקת הפונקציונליות של יישום אינטרנט או להשתמש בו לבדיקת שירותי אינטרנט באמצעות HttpClient.

פרטים נוספים על בדיקות פונקציונליות עם סלניום ו- TestNG זמינים כאן. גם כמה דברים נוספים בבדיקת שילוב במאמר זה.

12. מסקנה

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

ניתן למצוא את היישום של כל קטעי הקוד ב- Github.


$config[zx-auto] not found$config[zx-overlay] not found