TestNG Tutorial
โก Ringkasan Cerdas
TestNG adalah Generasi Berikutnya Java kerangka kerja pengujian yang berpasangan dengan Selenium untuk otomatisasi terstruktur, pelaporan yang komprehensif, dan eksekusi paralel. Tutorial ini mencakup anotasi inti, pengaturan proyek di Eclipse, menulis kasus uji pertama, laporan HTML, dan penggunaan parameter tingkat lanjut.
Apa itu TestNG?
TestNG adalah kerangka kerja pengujian otomatisasi di mana โNGโ merupakan singkatan dari โNext Generationโ. TestNG terinspirasi oleh JUnit dan menggunakan Java anotasi (@) untuk mengontrol alur pengujian. Ini mengatasi JUnitketerbatasan sebelumnya dan dirancang untuk membuat pengujian ujung ke ujung lebih mudah.
Dengan TestNG Anda dapat membuat laporan yang tepat dan langsung melihat berapa banyak pengujian yang berhasil, gagal, atau dilewati. Anda juga dapat menjalankan ulang hanya kasus yang gagal.
Sebagai contoh:
- Misalkan Anda memiliki lima kasus uji, masing-masing dalam metodenya sendiri, yang ditulis tanpa TestNGTiga percobaan berhasil; yang keempat gagal. Setelah memperbaiki yang keempat, Anda ingin menjalankan ulang hanya percobaan itu saja, karena tiga percobaan pertama sudah berhasil. Ini sulit dilakukan dengan kode metode main() biasa.
- TestNG menyediakan
testng-failed.xmlfile ditest-outputfolder. Menjalankan XML tersebut hanya akan mengeksekusi ulang kasus-kasus yang gagal.
Selain itu, Anda akan mempelajari keuntungan dari TestNG, cara menulis metode pengujian dengan anotasi @Test, dan cara mengkonversi kelas Anda menjadi rangkaian pengujian yang berjalan dari Eclipse atau baris perintah.
Mengapa Menggunakan TestNG dengan Selenium?
Secara default, Selenium Tes tidak menghasilkan hasil yang diformat dengan rapi. Dengan TestNG Setelah terhubung, test runner akan menghasilkan laporan terstruktur yang dapat Anda bagikan dengan tim.
jembatan Selenium pengguna lebih suka TestNG lebih JUnit karena rangkaian fiturnya yang lebih luas. Fitur-fitur utama untuk Selenium adalah:
- Laporan yang mencakup jumlah kasus uji yang dijalankan, berhasil, gagal, dan dilewati.
- Grup mudahping dari kasus uji melalui sebuah
testng.xmlberkas, dengan prioritas eksekusi. - Ulangi pengujian beberapa kali tanpa menggunakan perulangan.
invocationCount. - Jalankan beberapa pengujian di beberapa browser โ lintas-pengujian browser Dukungan.
- Integrasi yang lancar dengan Maven, Jenkinsdan alat bantu CI lainnya.
- Readable anotasi โ misalnya, @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
- Selenium WebDriver tidak memiliki fitur pelaporan bawaan; TestNG mengisi celah tersebut dengan laporan HTML yang rapi seperti yang di bawah ini.
- TestNG Menyederhanakan kode pengujian. Anda tidak lagi memerlukan metode main statis; anotasi menentukan apa yang dijalankan dan kapan.
- Pengecualian yang tidak tertangkap ditangani dengan baik oleh TestNGLangkah-langkah tersebut dilaporkan sebagai langkah yang gagal tanpa menghentikan seluruh proses.
Keuntungan TestNG lebih JUnit
TestNG menawarkan tiga keunggulan utama dibandingkan JUnit:
- Anotasi lebih mudah dipahami dan digunakan.
- Kasus uji dapat dikelompokkan dan diprioritaskan dengan upaya yang lebih sedikit.
- Eksekusi pengujian paralel didukung secara langsung.
Apa itu Anotasi dalam TestNG?
Anotasi dalam TestNG adalah baris kode yang ditempatkan di atas suatu metode untuk mengontrol bagaimana metode tersebut dieksekusi. Mereka selalu diawali dengan simbol @. Contoh sederhana ditunjukkan di bawah ini.
Anotasi dibahas secara detail di bagian tersebut. โAnotasi yang Digunakan dalam TestNG" Nanti di tutorial ini, jadi contoh di atas hanya untuk memberikan gambaran umum. TestNG Anotasi lebih mudah dikodekan dan dibaca daripada JUnit padanan, dan itu sangat penting saat menjalankan pengujian pada Selenium kisi di mana eksekusi paralel menjadi penting.
Cara Menulis Kasus Uji di TestNG
Menulis a TestNG Kasus uji ini terdiri dari tiga langkah:
- Tuliskan logika bisnis Anda dan tempatkan TestNG anotasi di atas setiap metode.
- Tambahkan metadata seperti nama kelas, nama grup, dan nama paket.
- Jalankan TestNG kelas dari IDE Anda atau baris perintah.
Buat Kasus Uji Menggunakan TestNG Penjelasan
Sekarang kita akan membuat kasus uji pertama kita menggunakan TestNG anotasi dalam SeleniumSebelum menulis tes, siapkan yang baru. TestNG proyek di Eclipse dan menyebutnya PertamaTestNGProject.
Menyiapkan yang Baru TestNG Project
Langkah 1) Klik Berkas > Baru > Java Project.
Langkah 2) Enter PertamaTestNGProject sebagai nama proyek dan klik Selanjutnya.
Langkah 3) Impor TestNG perpustakaan. Klik perpustakaan tab dan kemudian Tambahkan Perpustakaanโฆ.
Langkah 4) Dalam majalah Tambahkan Perpustakaan dialog, pilih TestNG dan klik Selanjutnya.
Langkah 5) Klik Finish.
TestNG Sekarang seharusnya muncul dalam daftar Perpustakaan.
Langkah 6) Tambahkan file JAR yang berisi Selenium API. Ini berasal dari Java driver klien diunduh dari selenium.dev/unduhan.
Arahkan ke folder tempat Selenium File JAR disimpan.
Setelah menambahkan file JAR eksternal, tampilan layar akan seperti ini.
Langkah 7) Klik Finish. Baru PertamaTestNGProject muncul di Penjelajah Paket.
Cara Membuat Baru TestNG Berkas Uji
Setelah proyek siap, buat yang baru. TestNG file.
Langkah 1) Klik kanan src folder dan pilih Baru > Lainnyaโฆ.
Langkah 2) Pilih TestNG folder, pilih TestNG kelas, Dan klik Selanjutnya.
Langkah 3) Masukkan nilai yang ditunjukkan di bawah ini dan klik Finish. itu Java file bernama PertamaTestNGFile.
Langkah 4) Eclipse menghasilkan TestNG Templat yang ditampilkan di bawah ini.
Membuat Kode untuk Pertama Kalinya TestNG Uji Kasus
Buat yang pertama Kasus cobaan yang memverifikasi kepemilikan Mercury Beranda tur.
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();
}
}
Hal-hal yang perlu diperhatikan:
- TestNG tidak membutuhkan
main()Metode. - Metode tidak harus statis.
- The @Uji tanda anotasi
verifyHomepageTitle()sebagai kasus uji. - Anotasi terdapat di dalam
org.testng.annotations.*paket. - The Tegas kelas dari
org.testng.Assertmendorong verifikasi.
Anda dapat memiliki beberapa anotasi @Test dalam satu TestNG berkas. Kami membahasnya di dalam โAnotasi yang Digunakan dalam TestNG" bagian.
Menjalankan Tes
Klik kanan file tersebut dan jalankan sebagai TestNG tes. Eclipse menghasilkan dua keluaran โ hasil teks di jendela Konsol dan hasil grafis di TestNG Jendela hasil.
Memeriksa Laporan yang Dibuat oleh TestNG
Jendela Konsol menyediakan ringkasan berbasis teks sementara TestNG Jendela hasil menampilkan tampilan grafis.
Menghasilkan Laporan HTML
TestNG juga dapat menghasilkan laporan HTML lengkap.
Langkah 1) Setelah berlari PertamaTestNGFile, klik kanan proyek dan pilih menyegarkan.
Langkah 2) A keluaran uji Folder akan muncul. Buka folder tersebut dan cari index.html โ laporan HTML untuk hasil pengujian terbaru.
Langkah 3) Double-klik index.html untuk membukanya di dalam EclipseBrowser 's. Tekan F5 untuk menyegarkan setelah dijalankan berikutnya.
Anotasi yang Digunakan dalam TestNG
Anda telah melihat anotasi @Test. Bagian selanjutnya akan membahas anotasi tingkat lanjut yang paling berguna.
Beberapa Kasus Uji
Tunggal TestNG File dapat memuat beberapa anotasi @Test. Secara default, metode yang diberi anotasi @Test dieksekusi sesuai urutan abjad. Dalam kode di bawah ini, metode c_test, a_test, dan b_test Diurutkan berdasarkan abjad tanpa memperhatikan urutan sumber.
Jalankan kode dan buka index.html. Klik Tampilan kronologis.
Parameter Teknis
Untuk mengganti urutan default, gunakan priority parameter. Parameter adalah kata kunci yang memodifikasi perilaku anotasi.
- Tetapkan nilai dengan
=. - Berikan parameter dalam tanda kurung yang ditempatkan tepat setelah anotasi, seperti yang ditunjukkan di bawah ini.
TestNG mengeksekusi anotasi @Test dari nilai prioritas terendah hingga tertinggi. Angka prioritas tidak perlu berurutan.
Laporan HTML tersebut mengkonfirmasi bahwa metode-metode dieksekusi dalam urutan prioritas menaik.
Beberapa Parameter
Selain priority, @Test menerima alwaysRun parameter (benar atau salah). Untuk menggunakan dua parameter atau lebih dalam satu anotasi, pisahkan dengan koma:
@Test(priority = 0, alwaysRun = true)
@BeforeTest dan @AfterTest
| @Tokopedia | Metode di bawah anotasi ini dijalankan sebelum kasus uji pertama di TestNG fillet. |
| @Setelah | Metode di bawah anotasi ini dijalankan setelah semua kasus uji di TestNG berkas selesai. |
Perhatikan kode di bawah ini.
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();
}
}
Berdasarkan tabel dan kode, kita dapat memprediksi bahwa urutannya adalah:
- 1 โ
launchBrowser() - ke-2 โ
verifyHomepageTitle() - ke-3 โ
terminateBrowser()
Penempatan blok anotasi dalam file sumber tidak memengaruhi urutan eksekusinya. Cobalah mengatur ulang metode-metodenya seperti yang ditunjukkan di bawah ini.
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);
}
}
Jalankan kode dan verifikasi hasilnya.
@BeforeMethod dan @AfterMethod
| @Tokopedia | Metode di bawah anotasi ini dijalankan sebelum setiap metode pengujian. |
| @Afterhod | Metode di bawah anotasi ini dijalankan setelah setiap metode pengujian. |
In Mercury Misalnya, kita ingin memverifikasi judul dari dua halaman target yang diakses dari halaman beranda.
Alur pengujiannya adalah:
- Buka halaman beranda dan periksa judulnya.
- Klik DAFTAR dan verifikasi judul halaman targetnya.
- Kembali ke halaman utama dan verifikasi judulnya.
- Klik DUKUNGAN dan verifikasi judul halaman targetnya.
- Kembali ke halaman utama dan periksa kembali judulnya.
Kode di bawah ini menunjukkan bagaimana @BeforeMethod dan @AfterMethod menangani langkah-langkah yang berulang.
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();
}
}
Setelah menjalankan pengujian, TestNG melaporkan urutan di bawah ini.
Singkatnya: tempatkan langkah-langkah penyiapan di dalam @Tokopedia dan pembersihan atau pengaturan ulang navigasi di dalam @Afterhod sehingga setiap kasus uji dimulai dan berakhir dalam keadaan yang diketahui.
Ringkasan TestNG Penjelasan
- @BeforeSuite: dijalankan sebelum semua pengujian dalam rangkaian pengujian.
- @AfterSuite: dijalankan setelah semua pengujian dalam rangkaian pengujian.
- @SebelumUji: dijalankan sebelum metode pengujian apa pun yang termasuk dalam kelas di dalam menandai.
- @AfterTest: dijalankan setelah semua metode pengujian yang termasuk dalam kelas di dalam menandai.
- @SebelumGrup: dijalankan sesaat sebelum metode pengujian pertama yang termasuk dalam kelompok yang terdaftar.
- @AfterGroups: dijalankan sesaat setelah metode pengujian terakhir yang termasuk dalam kelompok yang terdaftar.
- @SebelumKelas: berjalan sebelum metode pengujian pertama di kelas saat ini.
- @AfterClass: dijalankan setelah semua metode pengujian di kelas saat ini.
- @SebelumMetode: dijalankan sebelum setiap metode pengujian.
- @SetelahMetode: berjalan setelah setiap metode pengujian.
- @Tes: menandai metode tersebut sebagai kasus uji.


































