CodeGym/Kursy Java/Moduł 3/Pierwsze testy z JUnit

Pierwsze testy z JUnit

Dostępny

Łączenie frameworka JUnit

Do testowania kodu Java mamy świetny framework o nazwie JUnit . Działa świetnie, jest stale aktualizowany, jest bardzo popularny i oczywiście Intellij IDEA jest z nim bardzo ściśle zintegrowany.

Teraz wszyscy używają piątej wersji tego frameworka - JUnit 5 , choć w wielu projektach wciąż można spotkać jego czwartą wersję. Niewiele się różnią, ale i tak przyjrzymy się najnowszemu. Myślę, że zanim zaczniesz aktywnie pisać testy, zaakceptujesz mój wybór.

Jak więc dodać JUnit do projektu? Po nauczeniu się Mavena będzie to łatwe: po prostu dodaj ten kod do swojego pom.xml:

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

Nawiasem mówiąc, jeśli chcesz, aby Maven uruchamiał twoje testy na etapie kompilacji ( test stage ), musisz dodać jeszcze jeden fragment do 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>

@Adnotacja testowa

Załóżmy, że masz klasę, którą chcesz przetestować. Jaki jest najlepszy sposób na zrobienie tego? Zacznijmy od przykładu, bo ciężko jest przetestować klasę abstrakcyjną :)

Załóżmy, że mamy klasę Calculator , która może wykonywać 4 podstawowe operacje: dodawanie, odejmowanie, mnożenie i dzielenie. napiszmy to:

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

Chcemy przetestować metody tej klasy. Nigdy nie wiadomo, w przyszłości coś zmienią i wszystko przestanie działać. Jak możemy napisać dla niego testy?

Musimy stworzyć kolejną klasę. Aby to zrobić, zwykle przyjmują tę samą nazwę i dodają przyrostek Test . Do każdej metody należy dodać co najmniej jedną metodę testową. Przykład:

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

Kiedyś wymagano, aby nazwa metody zaczynała się od słowa test , ale nie jest to już wymagane.

Przykłady testów JUnit

Napiszmy kilka przykładów, w których przetestujemy metody naszej klasy CalculatorTest :

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

Tak wygląda typowy test JUnit. Z ciekawostek: zastosowano tu specjalną metodę assertEquals() : porównuje ona przekazane jej parametry, na co wskazuje słowo equals w swojej nazwie.

Jeśli parametry przekazane do assertEquals() nie są równe, metoda zgłosi wyjątek i test zakończy się niepowodzeniem. Ten wyjątek nie zapobiegnie uruchomieniu innych testów.

Komentarze
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy