Menyambung rangka kerja JUnit

Untuk menguji kod Java, kami mempunyai rangka kerja hebat yang dipanggil JUnit . Ia berfungsi hebat, ia sentiasa dikemas kini, ia sangat popular dan sudah tentu Intellij IDEA disepadukan dengan sangat rapat dengannya.

Kini semua orang menggunakan versi kelima rangka kerja ini - JUnit 5 , walaupun dalam banyak projek anda masih boleh menemui versi keempatnya. Mereka tidak jauh berbeza, tetapi kami akan melihat yang terkini pula. Saya fikir apabila anda mula aktif menulis ujian, anda akan meluluskan pilihan saya.

Jadi, bagaimana untuk menambah JUnit pada projek? Selepas mempelajari Maven ia akan menjadi mudah: hanya tambahkan kod ini pada pom.xml anda:

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

Ngomong-ngomong, jika anda mahu Maven menjalankan ujian anda pada peringkat binaan ( peringkat ujian ), maka anda perlu menambah satu lagi serpihan pada 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>

@Ujian anotasi

Katakan anda mempunyai kelas yang ingin anda uji. Apakah cara terbaik untuk melakukan ini? Mari kita mulakan dengan beberapa contoh, kerana sukar untuk menguji kelas abstrak :)

Katakan kita mempunyai kelas Kalkulator yang boleh melakukan 4 operasi asas: tambah, tolak, darab dan bahagi. Mari kita menulisnya:

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 kaedah kelas ini. Anda tidak pernah tahu, pada masa akan datang mereka mengubah sesuatu dan semuanya akan berhenti berfungsi. Bagaimanakah kita boleh menulis ujian untuknya?

Kita perlu membuat kelas lain. Untuk melakukan ini, mereka biasanya menggunakan nama yang sama dan menambah akhiran Ujian . Untuk setiap kaedah, anda mesti menambah sekurang-kurangnya satu kaedah ujian. Contoh:

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

Dahulu terdapat keperluan bahawa nama kaedah bermula dengan perkataan test , tetapi ini tidak lagi diperlukan.

Contoh ujian JUnit

Mari tulis beberapa contoh di mana kami akan menguji kaedah kelas CalculatorTest kami :

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);
    	}
}

Inilah rupa ujian JUnit biasa. Daripada yang menarik: kaedah khas assertEquals() digunakan di sini : ia membandingkan parameter yang dihantar kepadanya, seperti yang ditunjukkan oleh perkataan yang sama dalam namanya.

Jika parameter yang dihantar ke assertEquals() tidak sama, kaedah akan membuang pengecualian dan ujian akan gagal. Pengecualian ini tidak akan menghalang ujian lain daripada dijalankan.