Saat Anda menulis suite pengujian unit, mungkin ada beberapa aktivitas yang tidak terkait dengan pengujian yang perlu Anda lakukan. Kegiatan ini bisa berbentuk apa saja. Anda mungkin perlu menyambungkan ke database atau mengumpulkan sumber daya sebelum melakukan pengujian. Setelah setiap kasus pengujian dijalankan, Anda mungkin perlu melepaskan beberapa sumber daya.
VIDEO MAKEUSEOF HARI INI
Melakukan salah satu aktivitas yang tidak terkait dengan tes ini di luar ruang lingkup kelas tes unit mungkin membosankan jika bukan tidak mungkin. Keberhasilan eksekusi kelas pengujian Anda mungkin bergantung pada aktivitas ini, jadi JUnit menyediakan dua pasang anotasi untuk mengatasi masalah ini.
cara merekam audio di chrome
Anotasi @SebelumSemua
Kelas pengujian JUnit dapat memiliki satu atau beberapa metode pengujian. Anotasi @BeforeAll memberi sinyal bahwa metode tertentu harus dijalankan sebelum semua metode pengujian di kelas pengujian. Metode yang terkait dengan anotasi ini hanya dijalankan sekali (di awal pengujian) terlepas dari jumlah metode pengujian di kelas pengujian.
Metode apa pun yang menggunakan anotasi @BeforeAll harus mengikuti beberapa ketentuan. Metode ini harus memiliki tipe pengembalian batal, harus publik, dan tidak boleh pribadi. Anotasi @BeforeAll sangat ideal untuk membuat a koneksi ke database atau membuat file baru. Artikel ini menggunakan kelas pengujian kalkulator untuk menunjukkan bagaimana Anda dapat menggunakan anotasi @BeforeAll.
Kelas Kalkulator
package com.app;
public class Calculator {
public static int add(int num1, int num2) {
return num1 + num2;
}
public static int subtract(int num1, int num2) {
return num1 - num2;
}
public static int multiply(int num1, int num2) {
return num1 * num2;
}
public static int divide(int num1, int num2) {
return num1 / num2;
}
}
Kelas Tes Kalkulator
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;
@DisplayName("Test class demonstrating how to use the before and after annotations.")
class CalculatorTest {
@BeforeAll
public static void powerOnCalculator() {
System.out.println("The calculator is on");
}
@Test
@DisplayName("Testing method that adds two integer values.")
public void testAdd() {
assertEquals(7, Calculator.add(3, 4));
}
@Test
@DisplayName("Testing method that subtracts one integer value from another.")
public void testSubtract() {
assertEquals(6, Calculator.subtract(9, 3));
}
@Test
@DisplayName("Testing method that multiplies two integer values")
public void testMultiply() {
assertEquals(10, Calculator.multiply(5, 2));
}
@Test
@DisplayName("Testing method that divides one integer value by another")
public void testDivide() {
assertEquals(2, Calculator.divide(4, 2));
}
}
Di kelas ini, anotasi @BeforeAll bekerja dengan metode powerOnCalculator(), yang mencetak 'Kalkulator aktif' sebelum uji coba apa pun. Eksekusi pengujian yang berhasil mencetak laporan pengujian berikut:
Seperti yang Anda lihat, metode yang terkait dengan anotasi @BeforeAll tidak muncul dalam laporan pengujian. Namun, jika ada kesalahan dalam metode anotasi @BeforeAll, hasil laporan pengujian akan menunjukkan kesalahan ini.
Anotasi @BeforeEach
Seperti metode beranotasi @BeforeAll, metode beranotasi @BeforeEach tidak akan muncul dalam laporan pengujian. Metode beranotasi @BeforeEach dijalankan sebelum setiap metode pengujian di kelas pengujian. Jadi, jika kelas pengujian berisi dua metode pengujian, maka anotasi @BeforeEach akan dijalankan dua kali.
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@DisplayName("Test class demonstrating how to use the before and after annotations.")
class CalculatorTest {
@BeforeAll
public static void powerOnCalculator() {
System.out.println("The calculator is on");
}
@BeforeEach
public void clearCalculator() {
System.out.println("The calculator is ready");
}
@Test
@DisplayName("Testing method that adds two integer values.")
public void testAdd() {
assertEquals(7, Calculator.add(3, 4));
}
@Test
@DisplayName("Testing method that subtracts one integer value from another.")
public void testSubtract() {
assertEquals(6, Calculator.subtract(9, 3));
}
@Test
@DisplayName("Testing method that multiplies two integer values")
public void testMultiply() {
assertEquals(10, Calculator.multiply(5, 2));
}
@Test
@DisplayName("Testing method that divides one integer value by another")
public void testDivide() {
assertEquals(2, Calculator.divide(4, 2));
}
}
Menambahkan anotasi @BeforeEach ke kelas CalculatorTest menghasilkan output berikut:
Metode yang terkait dengan anotasi @BeforeEach dijalankan empat kali, satu kali sebelum setiap metode pengujian. Anda harus mencatat bahwa metode @BeforeEach tidak statis, memiliki tipe pengembalian batal, dan tidak pribadi, karena ini adalah ketentuan wajib. Penting juga untuk dicatat bahwa metode yang terkait dengan anotasi @BeforeEach berjalan setelah metode @BeforeAll.
Anotasi @AfterAll
Metode dengan Anotasi @AfterAll akan dijalankan setelah semua metode pengujian di kelas pengujian menyelesaikan eksekusinya. Anotasi @AfterAll sangat ideal untuk operasi file dasar , seperti menutup file, atau memutuskan sambungan dari database. Anotasi @AfterAll adalah padanan dari anotasi @BeforeAll. Seperti anotasi @BeforeAll, anotasi @AfterAll harus statis, harus mengembalikan void, dan banyak yang tidak bersifat pribadi.
@AfterAll
public static void powerOffCalculator() {
System.out.println("The calculator is off");
}
Menambahkan metode beranotasi @AfterAll ke kelas CalculatorTest yang ada akan mencetak output berikut ke konsol:
Perhatikan bahwa metode powerOffCalculator() , yang menggunakan anotasi @AfterAll, dicetak di akhir kelas pengujian, setelah semua metode pengujian dijalankan.
Anotasi @AfterEach
Anotasi @AfterEach adalah padanan dari anotasi @BeforeEach. Mereka memiliki ketentuan wajib yang sama, yang sedikit berbeda dari anotasi @BeforeAll dan @AfterAll. Yang membedakan anotasi @AfterEach dari anotasi @BeforeEach (selain namanya) adalah bahwa metode @AfterEach berjalan setelah setiap metode pengujian.
@AfterEach
public void returnResults() {
System.out.println("The results are ready");
}
Menjalankan kelas CalculatorTest mencetak output berikut ke konsol:
Outputnya menunjukkan bahwa metode yang terkait dengan anotasi @AfterEach (returnResults) dicetak empat kali. Setiap eksekusi metode returnResults() hanya terjadi setelah eksekusi setiap unit test. Ini terbukti dengan fakta bahwa output metode returnResults() muncul setelah setiap output dari metode yang terkait dengan anotasi @BeforeEach.
Poles Test Suite Anda Menggunakan Anotasi
JUnit memungkinkan Anda untuk menangani proses terkait non-pengujian menggunakan anotasi pasangan sebelum dan sesudah. Keempat anotasi ini termasuk dalam daftar beberapa anotasi lain yang menambah nilai pada pengujian Anda. Anotasi JUnit lainnya adalah @DisplayName.
bagaimana cara menemukan alamat ip printer saya?
Dua contoh kode yang menampilkan kelas CalculatorTest lengkap menggunakan anotasi @DisplayName. Anotasi @DisplayName membantu Anda membuat nama yang lebih bermakna untuk kelas pengujian dan metode pengujian Anda.