TestNG การกวดวิชา

⚡ สรุปอย่างชาญฉลาด

TestNG เป็นรุ่นต่อไป Java กรอบการทดสอบที่ทำงานร่วมกับ Selenium สำหรับการทำงานอัตโนมัติแบบมีโครงสร้าง การรายงานที่ครบถ้วน และการประมวลผลแบบขนาน บทช่วยสอนนี้ครอบคลุมคำอธิบายประกอบหลัก การตั้งค่าโปรเจ็กต์ใน Eclipseรวมถึงการเขียนกรณีทดสอบแรก การสร้างรายงาน HTML และการใช้งานพารามิเตอร์ขั้นสูง

  • 🧱 กรอบงานหลัก: TestNG ขยาย JUnit แนวคิดพร้อมคำอธิบายประกอบ, กลุ่มpingและการดำเนินการทดสอบแบบขนานสำหรับ Selenium ห้องสวีท
  • 🏷️ คำอธิบายประกอบช่วยขับเคลื่อนกระบวนการทำงาน: ลำดับการตั้งค่า การทดสอบ และการยกเลิกการตั้งค่าโดยใช้ @Test, @BeforeMethod, @AfterMethod, @BeforeTest และ @AfterTest
  • 🗂️ Eclipse การติดตั้ง: สร้างไฟล์ TestNG โครงการ เพิ่ม TestNG ห้องสมุดและ Selenium ไฟล์ JAR จากนั้นสร้างคลาสทดสอบจากตัวช่วยสร้าง
  • 📊 รายงาน: TestNG สร้างรายงานในรูปแบบข้อความ กราฟิก และ HTML ในโฟลเดอร์ test-output รวมถึงมุมมองตามลำดับเวลา
  • ⚙️ พารามิเตอร์: ใช้ priority, alwaysRun และ dataProvider เพื่อควบคุมลำดับการทำงานและป้อนข้อมูลเข้าสู่การทดสอบ
  • 🤖 AI Boost: ผู้ช่วยเขียนโค้ด AI ช่วยเร่งความเร็ว TestNG การสร้างคลาส การอัปเดตตัวระบุตำแหน่ง และการสร้างโครงสร้างพื้นฐานของ dataProvider

TestNG การกวดวิชา

ความหมายของ TestNG?

TestNG เป็นเฟรมเวิร์กสำหรับการทดสอบอัตโนมัติ โดยที่ “NG” ย่อมาจาก “Next Generation” (รุ่นต่อไป) TestNG ได้รับแรงบันดาลใจจาก JUnit และการใช้งาน Java การใช้คำอธิบายประกอบ (@) เพื่อควบคุมการไหลของการทดสอบ ช่วยแก้ปัญหาดังกล่าวได้ JUnitข้อจำกัดก่อนหน้านี้และได้รับการออกแบบมาเพื่อให้ การทดสอบแบบ end-to-end ง่ายดาย

ด้วยระบบเส้นทาง TestNG คุณสามารถสร้างรายงานที่ถูกต้องและดูได้ทันทีว่ามีการทดสอบผ่าน ล้มเหลว หรือถูกข้ามไปกี่รายการ นอกจากนี้ คุณยังสามารถเรียกใช้การทดสอบซ้ำเฉพาะกรณีที่ล้มเหลวได้อีกด้วย

ตัวอย่างเช่น:

  • สมมติว่าคุณมีกรณีทดสอบห้ากรณี แต่ละกรณีเขียนด้วยเมธอดของตัวเอง โดยไม่มี TestNGผ่านสามครั้ง ครั้งที่สี่ล้มเหลว หลังจากแก้ไขครั้งที่สี่แล้ว คุณต้องการรันซ้ำเฉพาะครั้งที่สี่เท่านั้น เนื่องจากสามครั้งแรกผ่านแล้ว การทำเช่นนี้ด้วยโค้ดเมธอด main() ธรรมดานั้นทำได้ยาก
  • TestNG ให้ testng-failed.xml แฟ้มใน test-output โฟลเดอร์ การเรียกใช้ไฟล์ XML นั้นจะดำเนินการซ้ำเฉพาะกรณีที่ล้มเหลวเท่านั้น

นอกจากนั้น คุณจะได้เรียนรู้ข้อดีของ... TestNGวิธีการเขียนเมธอดทดสอบด้วยคำอธิบายประกอบ @Test และวิธีการแปลงคลาสของคุณให้เป็นชุดทดสอบที่สามารถทำงานได้จาก... Eclipse หรือผ่านทางบรรทัดคำสั่ง

ทำไมต้องใช้ TestNG สีสดสวย Selenium?

โดยค่าเริ่มต้น Selenium การทดสอบไม่ได้แสดงผลลัพธ์ที่จัดรูปแบบอย่างสวยงาม ด้วย TestNG เมื่อเชื่อมต่อแล้ว โปรแกรมทดสอบจะส่งรายงานที่มีโครงสร้างซึ่งคุณสามารถแชร์กับทีมได้

ส่วนมาก Selenium ผู้ใช้ชอบ TestNG เกินกว่า JUnit เนื่องจากมีฟังก์ชันการใช้งานที่หลากหลายกว่า ฟังก์ชันหลักสำหรับ Selenium คือ:

  • รายงานที่แสดงจำนวนกรณีทดสอบที่ดำเนินการ ผ่าน ล้มเหลว และข้ามไป
  • กลุ่มง่ายๆping ของกรณีทดสอบผ่านทาง testng.xml ไฟล์ที่มีลำดับความสำคัญในการดำเนินการ
  • ทำการทดสอบซ้ำหลายครั้งโดยไม่ต้องใช้ลูปโดยใช้ invocationCount.
  • ทำการทดสอบหลายครั้งบนเบราว์เซอร์หลายตัว — การทดสอบข้ามแพลตฟอร์มการทดสอบเบราว์เซอร์ สนับสนุน
  • การทำงานร่วมกับ Maven เป็นไปอย่างราบรื่น Jenkinsและเครื่องมือ CI อื่นๆ
  • Readable คำอธิบายประกอบ — ตัวอย่างเช่น @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • Selenium WebDriver ไม่มีระบบรายงานในตัว TestNG เติมเต็มช่องว่างนั้นด้วยรายงาน HTML ที่เรียบร้อยเหมือนตัวอย่างด้านล่าง

TestNG ตัวอย่างรายงาน HTML สำหรับ Selenium การทดสอบ

  • TestNG ช่วยลดความซับซ้อนของโค้ดทดสอบ คุณไม่จำเป็นต้องมีเมธอด main แบบ static อีกต่อไปแล้ว annotation จะกำหนดว่าอะไรจะทำงานและเมื่อไหร่

ตามปกติ Java โครงสร้างคลาสทดสอบพร้อมเมธอด main

TestNG โครงสร้างคลาสทดสอบโดยใช้คำอธิบายประกอบ

  • ข้อผิดพลาดที่ไม่ได้ถูกจัดการจะได้รับการจัดการอย่างราบรื่นโดย TestNGขั้นตอนเหล่านี้จะถูกรายงานว่าเป็นขั้นตอนที่ล้มเหลวโดยไม่ทำให้การทำงานทั้งหมดหยุดลง

ข้อดีของการ TestNG เกินกว่า JUnit

TestNG มีข้อดีหลักๆ สามประการเหนือกว่า JUnit:

  • คำอธิบายประกอบนั้นเข้าใจและใช้งานได้ง่ายกว่า
  • สามารถจัดกลุ่มและจัดลำดับความสำคัญของกรณีทดสอบได้โดยใช้ความพยายามน้อยลง
  • ระบบรองรับการรันการทดสอบแบบขนานได้ทันทีโดยไม่ต้องตั้งค่าเพิ่มเติม

คำอธิบายประกอบคืออะไรใน TestNG?

คำอธิบายประกอบใน TestNG คือบรรทัดโค้ดที่วางไว้เหนือเมธอดเพื่อควบคุมวิธีการทำงานของเมธอดนั้น โดยจะเริ่มต้นด้วยสัญลักษณ์ @ เสมอ ตัวอย่างง่ายๆ แสดงอยู่ด้านล่าง

ตัวอย่าง TestNG คำอธิบายประกอบด้านบน Java วิธี

คำอธิบายประกอบจะกล่าวถึงโดยละเอียดในส่วนถัดไป “คำอธิบายประกอบที่ใช้ใน TestNG" ตัวอย่างข้างต้นเป็นเพียงการกำหนดความคาดหวังเท่านั้น ซึ่งจะกล่าวถึงในส่วนต่อไปของบทเรียนนี้ TestNG คำอธิบายประกอบนั้นเขียนโค้ดและอ่านง่ายกว่า JUnit ค่าเทียบเท่า และค่าเหล่านี้มีความสำคัญอย่างยิ่งเมื่อทำการทดสอบ Selenium ตะแกรง ในกรณีที่การประมวลผลแบบขนานมีความสำคัญ

วิธีเขียนกรณีทดสอบในรูปแบบ TestNG

การเขียน TestNG กรณีทดสอบประกอบด้วยสามขั้นตอน:

  1. เขียนตรรกะทางธุรกิจของคุณและวางลงไป TestNG คำอธิบายประกอบอยู่เหนือแต่ละวิธี
  2. เพิ่มข้อมูลเมตา เช่น ชื่อคลาส ชื่อกลุ่ม และชื่อแพ็กเกจ
  3. เรียกใช้ TestNG เรียกใช้คลาสจาก IDE หรือจากบรรทัดคำสั่ง

สร้างกรณีทดสอบโดยใช้ TestNG คำอธิบายประกอบ

ต่อไปนี้เราจะสร้างกรณีทดสอบแรกโดยใช้ TestNG คำอธิบายประกอบใน Seleniumก่อนเขียนข้อสอบ ให้ตั้งค่าใหม่ TestNG โครงการใน Eclipse และเรียกมันว่า ชื่อจริงTestNGโครงการ.

การตั้งค่าใหม่ TestNG โครงการ

ขั้นตอน 1) คลิก ไฟล์ > สร้างใหม่ > Java โครงการ.

Eclipse เมนูสำหรับสร้างใหม่ Java โครงการ

ขั้นตอน 2) เข้าสู่ ชื่อจริงTestNGโครงการ ระบุชื่อโปรเจ็กต์แล้วคลิก ถัดไป.

ใหม่ Java ตัวช่วยสร้างโปรเจ็กต์ชื่อ FirstTestNGโครงการ

ขั้นตอน 3) นำเข้า TestNG ห้องสมุด คลิกที่นี่ ห้องสมุด จากนั้น เพิ่มห้องสมุด….

แท็บห้องสมุดพร้อมตัวเลือกเพิ่มห้องสมุดใน Eclipse

ขั้นตอน 4) ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร เพิ่มไลบรารี โต้ตอบเลือก TestNG และคลิก ถัดไป.

การเลือก TestNG ในกล่องโต้ตอบเพิ่มไลบรารี

ขั้นตอน 5) คลิก เสร็จสิ้น.

เสร็จสิ้นขั้นตอนการเพิ่มไลบรารีด้วยวิซาร์ด

TestNG ตอนนี้ควรปรากฏในรายการห้องสมุดแล้ว

TestNG ปรากฏให้เห็นในรายการห้องสมุด

ขั้นตอน 6) เพิ่มไฟล์ JAR ที่มีข้อมูลต่อไปนี้ Selenium API เหล่านี้มาจาก Java ดาวน์โหลดไดรเวอร์ไคลเอ็นต์จาก selenium.dev/downloads.

เพิ่มกล่องโต้ตอบ "เพิ่มไฟล์ JAR ภายนอก" ใน Eclipse

ไปยังโฟลเดอร์ที่... Selenium ไฟล์ JAR ถูกจัดเก็บไว้

การเลือก Selenium ไฟล์ JAR สำหรับเส้นทางการสร้าง

หลังจากเพิ่มไฟล์ JAR ภายนอกแล้ว หน้าจอควรมีลักษณะดังนี้

Selenium ไฟล์ JAR ถูกเพิ่มลงในรายการไลบรารีแล้ว

ขั้นตอน 7) คลิก เสร็จสิ้น. ใหม่ ชื่อจริงTestNGโครงการ ปรากฏใน Package Explorer

ชื่อจริงTestNGสามารถดูโปรเจ็กต์ได้ใน Package Explorer

วิธีการสร้างใหม่ TestNG ไฟล์ทดสอบ

เมื่อโปรเจ็กต์พร้อมแล้ว ให้สร้างโปรเจ็กต์ใหม่ TestNG ไฟล์

ขั้นตอน 1) คลิกขวาที่ src โฟลเดอร์และเลือก ใหม่ > อื่นๆ….

เมนู "อื่นๆ" ใหม่จากโฟลเดอร์ src ใน Eclipse

ขั้นตอน 2) ขยาย TestNG โฟลเดอร์ เลือก TestNG ชั้นและคลิก ถัดไป.

TestNG ตัวเลือกคลาสในตัวช่วยสร้างใหม่

ขั้นตอน 3) ป้อนค่าที่แสดงด้านล่างแล้วคลิก เสร็จสิ้นส่วน Java ไฟล์ชื่อ ชื่อจริงTestNGเนื้อไม่มีมัน.

TestNG พ่อมดคลาสแรกTestNGค่าไฟล์

ขั้นตอน 4) Eclipse สร้าง TestNG แม่แบบแสดงอยู่ด้านล่าง

สร้าง TestNG เทมเพลตคลาสใน Eclipse บรรณาธิการ

การเขียนโค้ดครั้งแรกของคุณ TestNG กรณีทดสอบ

สร้างสิ่งแรก กรณีทดสอบ ที่ตรวจสอบความถูกต้องของกรรมสิทธิ์ Mercury หน้าแรกของทัวร์

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;

    @Test
    public void verifyHomepageTitle() {
        System.out.println("launching firefox browser");
        // Selenium 4 ships Selenium Manager, so the driver path is no longer required.
        driver = new FirefoxDriver();
        driver.get(baseUrl);
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
        driver.quit();
    }
}

สิ่งที่ควรสังเกต:

  • TestNG ไม่จำเป็นต้องมี main() วิธี
  • เมธอดไม่จำเป็นต้องเป็นแบบสแตติกเสมอไป
  • การขอ @ทดสอบ เครื่องหมายคำอธิบาย verifyHomepageTitle() เพื่อเป็นกรณีทดสอบ
  • คำอธิบายประกอบจะอยู่ใน org.testng.annotations.* บรรจุภัณฑ์
  • การขอ ยืนยัน ชั้นเรียนจาก org.testng.Assert ตรวจสอบความถูกต้องของไดรฟ์

คุณสามารถมีคำอธิบายประกอบ @Test หลายรายการในที่เดียวได้ TestNG ไฟล์นั้น เราจะกล่าวถึงเรื่องนั้นใน... “คำอธิบายประกอบที่ใช้ใน TestNG" มาตรา.

เรียกใช้การทดสอบ

คลิกขวาที่ไฟล์แล้วเลือกเรียกใช้เป็น... TestNG ทดสอบ Eclipse จะแสดงผลลัพธ์สองอย่าง คือ ผลลัพธ์ที่เป็นข้อความในหน้าต่าง Console และผลลัพธ์ที่เป็นกราฟิกในหน้าต่างอื่น TestNG หน้าต่างผลลัพธ์

TestNG หน้าต่างแสดงผลพร้อมผลการทดสอบ

Eclipse หน้าต่างคอนโซลพร้อม TestNG เอาต์พุตข้อความ

การตรวจสอบรายงานที่สร้างโดย TestNG

หน้าต่าง Console จะแสดงสรุปข้อมูลในรูปแบบข้อความ ในขณะที่ TestNG หน้าต่างแสดงผลลัพธ์จะแสดงผลในรูปแบบกราฟิก

ข้อความเทียบกับภาพกราฟิก TestNG การเปรียบเทียบผลลัพธ์

การสร้างรายงาน HTML

TestNG นอกจากนี้ยังสามารถสร้างรายงาน HTML แบบเต็มรูปแบบได้อีกด้วย

ขั้นตอน 1) หลังจากวิ่ง ชื่อจริงTestNGเนื้อไม่มีมันคลิกขวาที่โปรเจ็กต์แล้วเลือก รีเฟรช.

ตัวเลือกการรีเฟรชสำหรับ TestNG โครงการใน Eclipse

ขั้นตอน 2) A เอาต์พุตทดสอบ โฟลเดอร์จะปรากฏขึ้น ขยายโฟลเดอร์นั้นแล้วค้นหา index.html — รายงาน HTML สำหรับการประมวลผลครั้งล่าสุด

โฟลเดอร์ผลลัพธ์การทดสอบที่มีการไฮไลต์ไฟล์ index.html

ขั้นตอน 3) Double-คลิก index.html เพื่อเปิดมันจากด้านใน Eclipseเบราว์เซอร์ของคุณ กด F5 เพื่อรีเฟรชหลังจากใช้งานครั้งต่อไป

TestNG รายงานดัชนี HTML ที่แสดงผลใน Eclipse

คำอธิบายประกอบที่ใช้ใน TestNG

คุณได้เห็นคำอธิบายประกอบ @Test ไปแล้ว ส่วนที่เหลือของหัวข้อนี้จะกล่าวถึงคำอธิบายประกอบขั้นสูงที่มีประโยชน์ที่สุด

กรณีทดสอบหลายกรณี

โสด TestNG ไฟล์หนึ่งสามารถมีคำอธิบายประกอบ @Test ได้หลายรายการ โดยค่าเริ่มต้น เมธอดที่ติดคำอธิบายประกอบ @Test จะทำงานตามลำดับตัวอักษร ในโค้ดด้านล่าง เมธอดต่างๆ จะทำงานตามลำดับตัวอักษร c_test, a_testและ b_test ดำเนินการตามลำดับตัวอักษรโดยไม่คำนึงถึงลำดับของแหล่งที่มา

เมธอด @Test หลายวิธีในที่เดียว TestNG ชั้น

รันโค้ดและเปิด index.html. คลิก มุมมองตามลำดับเวลา.

มุมมองตามลำดับเวลาของหลายสิ่ง TestNG วิธีการ

พารามิเตอร์

หากต้องการเปลี่ยนแปลงลำดับเริ่มต้น ให้ใช้ priority พารามิเตอร์. พารามิเตอร์คือคำหลักที่ใช้ปรับเปลี่ยนพฤติกรรมของคำอธิบายประกอบ

  • กำหนดค่าด้วย =.
  • ครอบพารามิเตอร์ด้วยวงเล็บที่วางไว้ทันทีหลังคำอธิบายประกอบ ดังแสดงด้านล่าง

TestNG คำอธิบายประกอบด้วยไวยากรณ์พารามิเตอร์และค่า

TestNG ดำเนินการตามคำอธิบายประกอบ @Test จากค่าลำดับความสำคัญต่ำสุดไปยังค่าลำดับความสำคัญสูงสุด โดยหมายเลขลำดับความสำคัญไม่จำเป็นต้องต่อเนื่องกัน

โค้ดฉบับเต็มพร้อมพารามิเตอร์ลำดับความสำคัญ @Test

รายงาน HTML ยืนยันว่าวิธีการต่างๆ ถูกดำเนินการตามลำดับความสำคัญจากน้อยไปมาก

TestNG รายงานแสดงวิธีการที่ถูกเรียกใช้งานเรียงตามลำดับความสำคัญจากน้อยไปมาก

พารามิเตอร์หลายตัว

นอกเหนือจาก priority@Test ยอมรับ alwaysRun พารามิเตอร์ (จริงหรือเท็จ) หากต้องการใช้พารามิเตอร์สองตัวขึ้นไปในคำอธิบายประกอบเดียว ให้คั่นด้วยเครื่องหมายจุลภาค:

@Test(priority = 0, alwaysRun = true)

ตัวอย่างการใช้พารามิเตอร์หลายตัวภายในคำอธิบายประกอบ @Test

@BeforeTest และ @AfterTest

@ก่อนสอบ เมธอดภายใต้คำอธิบายประกอบนี้ทำงาน ก่อนกรณีทดสอบแรกใน TestNG ไฟล์.
@หลังทดสอบ เมธอดภายใต้คำอธิบายประกอบนี้ทำงาน หลังจากกรณีทดสอบทั้งหมดใน TestNG ไฟล์เสร็จสิ้น.

พิจารณารหัสด้านล่าง

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;

    @BeforeTest
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @Test
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }

    @AfterTest
    public void terminateBrowser() {
        driver.quit();
    }
}

จากตารางและโค้ด เราสามารถคาดการณ์ลำดับได้ดังนี้:

  • อันดับที่ 1 — launchBrowser()
  • ที่ 2 — verifyHomepageTitle()
  • ที่ 3 — terminateBrowser()

ตำแหน่งของบล็อกคำอธิบายประกอบในไฟล์ต้นฉบับไม่มีผลต่อลำดับการทำงานของบล็อกเหล่านั้น ลองสลับลำดับวิธีการดังที่แสดงด้านล่าง

package firsttestngpackage;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;

    @AfterTest                              // Jumbled
    public void terminateBrowser() {
        driver.quit();
    }

    @BeforeTest                             // Jumbled
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @Test                                   // Jumbled
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }
}

รันโค้ดและตรวจสอบผลลัพธ์

TestNG ผลลัพธ์ยืนยันลำดับแม้ว่าคำอธิบายประกอบจะสับสนก็ตาม

@BeforeMethod และ @AfterMethod

@ก่อนวิธีการ เมธอดภายใต้คำอธิบายประกอบนี้ทำงาน ก่อนวิธีการทดสอบแต่ละวิธี.
@AfterMethod เมธอดภายใต้คำอธิบายประกอบนี้ทำงาน หลังจากวิธีการทดสอบแต่ละวิธี.

In Mercury สมมติว่าเราต้องการตรวจสอบชื่อของสองหน้าเป้าหมายที่เข้าถึงได้จากหน้าแรก

สามลิงก์จาก Mercury หน้าแรกของทัวร์

ขั้นตอนการทดสอบมีดังนี้:

  • เปิดหน้าแรกและตรวจสอบชื่อเรื่อง
  • คลิกลงทะเบียนและตรวจสอบชื่อของหน้าเป้าหมาย
  • กลับไปที่หน้าแรกและตรวจสอบชื่อเรื่องอีกครั้ง
  • คลิก SUPPORT และตรวจสอบชื่อของเพจเป้าหมาย
  • กลับไปที่หน้าแรกและตรวจสอบชื่อเรื่องอีกครั้ง

โค้ดด้านล่างแสดงให้เห็นว่า @BeforeMethod และ @AfterMethod จัดการกับขั้นตอนที่ทำซ้ำอย่างไร

package firsttestngpackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class FirstTestNGFile {

    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    public WebDriver driver;
    public String expected = null;
    public String actual = null;

    @BeforeTest
    public void launchBrowser() {
        System.out.println("launching firefox browser");
        driver = new FirefoxDriver();
        driver.get(baseUrl);
    }

    @BeforeMethod
    public void verifyHomepageTitle() {
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = driver.getTitle();
        Assert.assertEquals(actualTitle, expectedTitle);
    }

    @Test(priority = 0)
    public void register() {
        driver.findElement(By.linkText("REGISTER")).click();
        expected = "Register: Mercury Tours";
        actual = driver.getTitle();
        Assert.assertEquals(actual, expected);
    }

    @Test(priority = 1)
    public void support() {
        driver.findElement(By.linkText("SUPPORT")).click();
        expected = "Under Construction: Mercury Tours";
        actual = driver.getTitle();
        Assert.assertEquals(actual, expected);
    }

    @AfterMethod
    public void goBackToHomepage() {
        driver.findElement(By.linkText("Home")).click();
    }

    @AfterTest
    public void terminateBrowser() {
        driver.quit();
    }
}

หลังจากทำการทดสอบเสร็จสิ้น TestNG รายงานลำดับดังต่อไปนี้

TestNG รายงานลำดับโดยใช้ BeforeMethod และ AfterMethod

โดยสรุป: ใส่ขั้นตอนการตั้งค่าไว้ด้านใน @ก่อนวิธีการ และการล้างข้อมูลหรือการรีเซ็ตการนำทางภายใน @AfterMethod ดังนั้นแต่ละกรณีทดสอบจึงเริ่มต้นและสิ้นสุดในสถานะที่ทราบได้

สรุปสาระสำคัญของ TestNG คำอธิบายประกอบ

  • @BeforeSuite: รันก่อนการทดสอบทั้งหมดในชุดทดสอบ
  • @AfterSuite: รันหลังจากทำการทดสอบทั้งหมดในชุดทดสอบเสร็จสิ้น
  • @BeforeTest: ทำงานก่อนเมธอดทดสอบใดๆ ที่อยู่ในคลาสภายใน แท็ก
  • @AfterTest: รันหลังจากเมธอดทดสอบทั้งหมดที่อยู่ในคลาสภายใน แท็ก
  • @BeforeGroups: ทำงานก่อนวิธีการทดสอบแรกที่อยู่ในกลุ่มใดกลุ่มหนึ่งที่ระบุไว้เล็กน้อย
  • @AfterGroups: จะทำงานหลังจากวิธีการทดสอบสุดท้ายที่อยู่ในกลุ่มใดกลุ่มหนึ่งที่ระบุไว้ไม่นาน
  • @ก่อนเรียน: รันก่อนเมธอดทดสอบแรกในคลาสปัจจุบัน
  • @AfterClass: รันหลังจากเมธอดทดสอบทั้งหมดในคลาสปัจจุบันเสร็จสิ้น
  • @BeforeMethod: ดำเนินการก่อนวิธีการทดสอบแต่ละวิธี
  • @AfterMethod: ดำเนินการหลังจากวิธีการทดสอบแต่ละวิธี
  • @ทดสอบ: กำหนดให้เมธอดดังกล่าวเป็นกรณีทดสอบ

คำถามที่พบบ่อย

JUnit 5 ปรับปรุงให้ทันสมัย JUnit โดยใช้ API ของ Jupiter และโมเดลส่วนขยาย TestNG ยังคงเป็นผู้นำด้านการประมวลผลแบบขนานและการจัดกลุ่มระดับชุดโปรแกรมpingdependsOn และ DataProvider จำนวนมาก Selenium ทีมเลือก TestNG สำหรับชุดซอฟต์แวร์แบบครบวงจรและ JUnit 5 สำหรับการทดสอบหน่วย

เพิ่ม parallel=”methods” หรือ parallel=”classes” พร้อมด้วยแอตทริบิวต์ thread-count ใน แท็กภายในไฟล์ testng.xml TestNG จากนั้นจึงกระจายวิธีการทดสอบไปยังเธรดต่างๆ ซึ่งเหมาะสำหรับ Selenium การทำงานแบบ Grid หรือ Cloud บนเบราว์เซอร์ต่างๆ

@DataProvider ป้อนชุดข้อมูลหลายชุดเข้าสู่เมธอด @Test เดียว โดยแต่ละแถวใน Provider จะนับเป็นหนึ่งการดำเนินการ ซึ่งเป็นรูปแบบมาตรฐานสำหรับ Data-Driven Learning Selenium ทดสอบกับแบบฟอร์ม ช่องค้นหา หรือหน้าจอเข้าสู่ระบบ

ใช่. AI ผู้ช่วยการเขียนโค้ดสร้างขึ้น TestNG การสร้างโครงร่าง การใส่คำอธิบายประกอบให้กับเมธอด @Test การสร้างคลาส Page Object และการร่างอาร์เรย์ DataProvider จากไฟล์ CSV ตัวอย่าง ช่วยลดเวลาในการสร้างโครงร่างได้อย่างมาก

AI แบบสร้างสรรค์จะประมวลผลไฟล์ testng-results.xml และบันทึก Surefire จัดกลุ่มความล้มเหลวที่คล้ายกัน แนะนำสาเหตุที่เป็นไปได้ และร่างตั๋ว Jira ซึ่งจะช่วยลดเวลาในการคัดกรองการทดสอบที่ไม่เสถียรและช่วยให้หัวหน้าทีม QA จัดลำดับความสำคัญของการแก้ไขปัญหา CI ได้ดียิ่งขึ้น

สรุปโพสต์นี้ด้วย: