Connecter le framework JUnit

Pour tester le code Java, nous avons un excellent framework appelé JUnit . Il fonctionne très bien, il est constamment mis à jour, il est très populaire et bien sûr Intellij IDEA y est très étroitement intégré.

Maintenant, tout le monde utilise la cinquième version de ce framework - JUnit 5 , bien que dans de nombreux projets, vous puissiez toujours trouver sa quatrième version. Ils ne sont pas très différents, mais nous allons quand même jeter un œil au dernier. Je pense qu'au moment où vous commencerez activement à écrire des tests, vous approuverez mon choix.

Alors, comment ajouter JUnit au projet ? Après avoir appris Maven, ce sera facile : ajoutez simplement ce code à votre pom.xml :

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

Au fait, si vous voulez que Maven exécute vos tests au stade de la construction ( stade de test ), vous devez ajouter un fragment supplémentaire à 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>

@Tester les annotations

Disons que vous avez une classe que vous voulez tester. Quelle est la meilleure façon de procéder? Commençons par quelques exemples, car il est difficile de tester une classe abstraite :)

Supposons que nous ayons une classe Calculatrice capable d'effectuer 4 opérations de base : addition, soustraction, multiplication et division. Écrivons-le :

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

Nous voulons tester les méthodes de cette classe. On ne sait jamais, à l'avenir, ils changent quelque chose et tout cessera de fonctionner. Comment pouvons-nous écrire des tests pour cela?

Nous devons créer une autre classe. Pour ce faire, ils prennent généralement le même nom et ajoutent le suffixe Test . Pour chaque méthode, vous devez ajouter au moins une méthode de test. Exemple:

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

Auparavant, le nom de la méthode devait commencer par le mot test , mais ce n'est plus obligatoire.

Exemples de tests JUnit

Écrivons quelques exemples dans lesquels nous allons tester les méthodes de notre classe 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);
    	}
}

Voici à quoi ressemble un test JUnit typique. De l'intéressant : la méthode spéciale assertEquals() est utilisée ici : elle compare les paramètres qui lui sont passés, comme indiqué par le mot equals dans son nom.

Si les paramètres passés à assertEquals() ne sont pas égaux, la méthode lèvera une exception et le test échouera. Cette exception n'empêchera pas l'exécution d'autres tests.