Menghubungkan kerangka kerja JUnit

Untuk menguji kode Java, kami memiliki kerangka kerja hebat bernama JUnit . Ini berfungsi dengan baik, terus diperbarui, sangat populer dan tentu saja Intellij IDEA terintegrasi sangat erat dengannya.

Sekarang semua orang menggunakan versi kelima kerangka kerja ini - JUnit 5 , meskipun di banyak proyek Anda masih dapat menemukan versi keempatnya. Mereka tidak jauh berbeda, tapi kita akan melihat yang terbaru. Saya pikir pada saat Anda mulai aktif menulis tes, Anda akan menyetujui pilihan saya.

Jadi, bagaimana cara menambahkan JUnit ke proyek? Setelah mempelajari Maven akan mudah: cukup tambahkan kode ini ke pom.xml Anda:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
	<version>5.8.1</version>
	<scope>test</scope>
</dependency>

Omong-omong, jika Anda ingin Maven menjalankan pengujian pada tahap pembuatan ( tahap pengujian ), maka Anda perlu menambahkan satu fragmen lagi ke pom.xml:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
	<version>2.19.1</version>
	<dependencies>
    	<dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.3.2</version>
    	</dependency>
	</dependencies>
</plugin>

@Test anotasi

Katakanlah Anda memiliki kelas yang ingin Anda uji. Apa cara terbaik untuk melakukan ini? Mari kita mulai dengan beberapa contoh, karena sulit untuk menguji kelas abstrak :)

Misalkan kita memiliki kelas Kalkulator yang dapat melakukan 4 operasi dasar: penjumlahan, pengurangan, perkalian, dan pembagian. Mari kita tulis:

class Calculator {
    	public int add(int a, int b) {
        	return a+b;
    	}

    	public int sub(int a, int b) {
        	return a-b;
    	}

    	public int mul (int a, int b) {
        	return a*b;
    	}

    	public int div(int a, int b) {
        	return a/b;
    	}
}

Kami ingin menguji metode kelas ini. Anda tidak pernah tahu, di masa depan mereka mengubah sesuatu dan semuanya akan berhenti bekerja. Bagaimana kita bisa menulis tes untuk itu?

Kita perlu membuat kelas lain. Untuk melakukan ini, mereka biasanya menggunakan nama yang sama dan menambahkan akhiran Test . Untuk setiap metode, Anda harus menambahkan setidaknya satu metode pengujian. Contoh:

class CalculatorTest {
   	@Test
    	public void add() {
    	}
   	@Test
    	public void sub() {
        }
   	@Test
    	public void mul() {
    	}
   	@Test
    	public void div() {
    	}
}

Dulu ada persyaratan bahwa nama metode diawali dengan kata test , tetapi ini tidak lagi diperlukan.

Contoh pengujian JUnit

Mari tulis beberapa contoh di mana kita akan menguji metode kelas CalculatorTest kita :

class CalculatorTest {
   	@Test
    	public void add() {
        	Calculator calc = new Calculator();
        	int result = calc.add(2, 3);
        	assertEquals(5, result);
    	}

   	@Test
    	public void sub() {
        	Calculator calc = new Calculator();
        	int result = calc.sub(10, 10);
        	assertEquals(0, result);
        }

   	@Test
    	public void mul() {
        	Calculator calc = new Calculator();
        	int result = calc.mul(-5, -3);
        	assertEquals(15, result);
    	}

   	@Test
    	public void div() {
        	Calculator calc = new Calculator();
        	int result = calc.div(2, 3);
        	assertEquals(0, result);
    	}
}

Seperti inilah tampilan tes JUnit pada umumnya. Dari yang menarik: metode khusus assertEquals() digunakan di sini : ini membandingkan parameter yang diteruskan ke sana, seperti yang ditunjukkan oleh kata sama dengan namanya.

Jika parameter yang diteruskan ke assertEquals() tidak sama, metode akan mengeluarkan pengecualian dan pengujian akan gagal. Pengecualian ini tidak akan mencegah pengujian lain untuk berjalan.