AIDE .NET

Junit Java (Comment cela fonctionne pour les développeurs)

Publié septembre 29, 2024
Partager:

Le framework JUnit est un framework de tests unitaires largement utilisé pour les applications Java. Il fournit un moyen simple et élégant d'écrire et d'exécuter des tests répétables. Avec JUnit Java, les développeurs peuvent s'assurer que leur code fonctionne comme prévu en écrivant des tests unitaires qui vérifient différents aspects de leur logiciel. De plus, les développeurs peuvent également écrire des classes de test pour organiser les cas de test et utiliser des runners de test pour exécuter les tests et obtenir des retours. Les frameworks de test unitaire aident collectivement non seulement à identifier les bogues, mais aussi à promouvoir une meilleure conception et maintenabilité.

Dans cet article, nous aborderons l'exécution des tests Junit Java et examinerons différentes techniques pour le faire. Nous écrirons également un cas de test pour la création de PDF en utilisantIronPDF pour Java.

Historique et évolution de JUnit

Le framework de test JUnit a été créé par Kent Beck et Erich Gamma, deux des figures de proue de la communauté du développement logiciel. Depuis sa création à la fin des années 1990, JUnit a subi plusieurs itérations, chacune ajoutant plus de fonctionnalités et améliorant la facilité d'utilisation. La version stable actuelle, JUnit 5, également connue sous le nom de JUnit Jupiter, introduit plusieurs améliorations par rapport à ses prédécesseurs, la rendant plus robuste et flexible.

Caractéristiques principales de JUnit

  1. Annotations : JUnit utilise des annotations pour définir et configurer les tests. Les annotations courantes incluent :

    • @Test : Marque une méthode comme méthode de test.

    • @BeforeEach : S'exécute avant chaque test.

    • @AfterEach : S'exécute après chaque test.

    • @BeforeAll : S'exécute une fois avant tous les tests.
    • @AfterAll : S'exécute une fois après tous les tests.
  2. Assertions : Les assertions sont utilisées pour vérifier si les résultats des tests correspondent aux résultats attendus. Certaines assertions courantes incluent :

    • assertEquals(attendu, réel): Vérifie si deux valeurs sont égales.
      • assertTrue(condition): Vérifie si une condition est vraie.
      • assertFalse(condition): Vérifie si une condition est fausse.
      • assertNull(objet): Vérifie si un objet est nul.
      • assertNotNull(objet): Vérifie si un objet n'est pas nul.
  1. Tests paramétrés : JUnit prend en charge les tests paramétrés, permettant au même test de s'exécuter avec différents paramètres, rendant ainsi l'exécution des tests plus efficace.

  2. Suites de tests : Les tests peuvent être regroupés en suites de tests pour exécuter plusieurs tests ensemble.

  3. Test d'exception : JUnit peut vérifier si une méthode lance les exceptions attendues.

  4. Intégration avec les outils de construction : JUnit s'intègre parfaitement avec des outils de construction largement utilisés comme Maven. Cela vous permet d'exécuter des tests et de tester le code automatiquement pendant le processus de compilation et d'informer les développeurs si un test échoue pendant ce processus.

    Junit Java(Comment cela fonctionne pour les développeurs) : Figure 1 - Test unitaire avec JUnit

Intégration avec les outils de build

JUnit s'intègre parfaitement avec des outils de construction largement utilisés comme Maven. Cela vous permet d'exécuter des tests automatiquement pendant le processus de compilation.

Pour utiliser JUnit avec Maven, ajoutez la dépendance suivante à votre fichier pom.xml :

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<dependencies> <dependency> <groupId> org.junit.jupiter</groupId> <artifactId> junit-jupiter-api</artifactId> <version>5.8.1</version> <scope> test</scope> </dependency> <dependency> <groupId> org.junit.jupiter</groupId> <artifactId> junit-jupiter-engine</artifactId> <version>5.8.1</version> <scope> test</scope> </dependency> </dependencies>
VB   C#

Écrire votre premier test JUnit

Avant de plonger dans des exemples plus complexes, commençons par un simple cas de test unitaire. Nous allons écrire un test pour une classe de calculatrice basique.

Classe Calculatrice

// Calculator.java
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    public int subtract(int a, int b) {
        return a - b;
    }
}
// Calculator.java
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    public int subtract(int a, int b) {
        return a - b;
    }
}
' Calculator.java
Public Class Calculator
	Public Function add(ByVal a As Integer, ByVal b As Integer) As Integer
		Return a + b
	End Function
	Public Function subtract(ByVal a As Integer, ByVal b As Integer) As Integer
		Return a - b
	End Function
End Class
VB   C#

Classe de test unitaire

// CalculatorTest.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        assertEquals(5, calculator.add(2, 3));
    }
    @Test
    public void testSubtract() {
        Calculator calculator = new Calculator();
        assertEquals(1, calculator.subtract(3, 2));
    }
}
// CalculatorTest.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        assertEquals(5, calculator.add(2, 3));
    }
    @Test
    public void testSubtract() {
        Calculator calculator = new Calculator();
        assertEquals(1, calculator.subtract(3, 2));
    }
}
' CalculatorTest.java
Private org As import
Private Shared As import
Public Class CalculatorTest
	Test Public Sub testAdd()
		Dim calculator As New Calculator()
		assertEquals(5, calculator.add(2, 3))
	End Sub
	Test Public Sub testSubtract()
		Dim calculator As New Calculator()
		assertEquals(1, calculator.subtract(3, 2))
	End Sub
End Class
VB   C#

L'exemple CalculatorTest contient deux méthodes de test, une pour tester l'addition : testAdd et une pour tester la soustraction : testSubtract. Chaque méthode crée une instance de la classe Calculator et utilise des assertions pour vérifier la correction des méthodes add et subtract.

Sortie

Junit Java(Comment cela fonctionne pour les développeurs) : Figure 2 - Résultat de l'exécution des tests Junit

Fonctionnalités avancées de JUnit

Tests paramétrés

Les tests paramétrés vous permettent d'exécuter le même test avec différents ensembles de paramètres. Ceci est utile pour tester des méthodes avec un large éventail d’entrées.

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorParameterizedTest {
    @ParameterizedTest
    @CsvSource({
        "1, 1, 2",
        "2, 3, 5",
        "10, 20, 30"
    })
    public void testAdd(int a, int b, int expected) {
        Calculator calculator = new Calculator();
        assertEquals(expected, calculator.add(a, b));
    }
}
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorParameterizedTest {
    @ParameterizedTest
    @CsvSource({
        "1, 1, 2",
        "2, 3, 5",
        "10, 20, 30"
    })
    public void testAdd(int a, int b, int expected) {
        Calculator calculator = new Calculator();
        assertEquals(expected, calculator.add(a, b));
    }
}
Private org As import
Private org As import
Private Shared As import
Public Class CalculatorParameterizedTest
	ParameterizedTest CsvSource({ "1, 1, 2", "2, 3, 5", "10, 20, 30" }) Public Sub testAdd(ByVal a As Integer, ByVal b As Integer, ByVal expected As Integer)
		Dim calculator As New Calculator()
		assertEquals(expected, calculator.add(a, b))
	End Sub
End Class
VB   C#

Dans cet exemple, la méthode testAdd s'exécute trois fois avec différents ensembles d'entrées, tels que spécifiés par le CsvSource.

Test d'Exception

Parfois, vous devez vérifier qu'une méthode déclenche une exception attendue.

Ajoutez la méthode suivante à votre classe de calculatrice.

public float divide(int a, int b) {
        return a / b;
    }
public float divide(int a, int b) {
        return a / b;
    }
Public Function divide(ByVal a As Integer, ByVal b As Integer) As Single
		Return a \ b
End Function
VB   C#

Classe de Test :

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorExceptionTest {
    @Test
    public void testDivisionByZero() {
        Calculator calculator = new Calculator();
        assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0));
    }
}
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorExceptionTest {
    @Test
    public void testDivisionByZero() {
        Calculator calculator = new Calculator();
        assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0));
    }
}
Private org As import
Private Shared As import
Friend Class CalculatorExceptionTest
	Test Public Sub testDivisionByZero()
		Dim calculator As New Calculator()
		assertThrows(ArithmeticException.class, () -> calculator.divide(1, 0))
	End Sub
End Class
VB   C#

Sortie

Junit Java(Comment cela fonctionne pour les développeurs) : Figure 3 - Résultat de l'exécution des tests Junit

Intégration d'IronPDF avec JUnit en Java

IronPDFest une bibliothèque puissante pour générer des documents PDF dans des applications Java. L'intégration d'IronPDF avec JUnit vous permet d'automatiser le test de la fonctionnalité de génération de PDF, garantissant que vos documents sont créés avec précision et répondent aux spécifications souhaitées.

Junit Java(Comment ça fonctionne pour les développeurs) : Figure 4 - Page d'accueil d'IronPDF : La bibliothèque PDF Java

Pour intégrer IronPDF avec JUnit, vous devez d'abord inclure la bibliothèque IronPDF dans les dépendances de votre projet.

<dependencies>
<!--Adds IronPDF Java. Use the latest version in the version tag.-->
    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>20xx.xx.xxxx</version>
    </dependency>
<!--Adds the slf4j logger which IronPDF Java uses.-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.3</version>
    </dependency>
</dependencies>
<dependencies>
<!--Adds IronPDF Java. Use the latest version in the version tag.-->
    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>20xx.xx.xxxx</version>
    </dependency>
<!--Adds the slf4j logger which IronPDF Java uses.-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.3</version>
    </dependency>
</dependencies>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<dependencies> <!--Adds IronPDF Java.Use the latest version in the version tag.-- > <dependency> <groupId> com.ironsoftware</groupId> <artifactId> ironpdf</artifactId> <version>20xx.xx.xxxx</version> </dependency> <!--Adds the slf4j logger which IronPDF Java uses.-- > <dependency> <groupId> org.slf4j</groupId> <artifactId> slf4j-simple</artifactId> <version>2.0.3</version> </dependency> </dependencies>
VB   C#

Une fois terminé, vous pouvez écrire des cas de test pour valider la logique de génération de PDF en utilisant les API d'IronPDF. Voici un exemple de comment utiliser JUnit pour tester la génération de PDF avec IronPDF :

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import com.ironsoftware.ironpdf.*;
import java.io.File;
import java.io.IOException;
class PdfGenerationTest {
    @Test
    public void testPdfGeneration() throws IOException {
        // Define HTML content
        String htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        // Convert HTML to PDF
        PdfDocument pdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent);
        // Save PDF to file
        pdfDocument.saveAs("output.pdf");
        // Assert PDF generation
        assertTrue(new File("output.pdf").exists());
    }
}
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import com.ironsoftware.ironpdf.*;
import java.io.File;
import java.io.IOException;
class PdfGenerationTest {
    @Test
    public void testPdfGeneration() throws IOException {
        // Define HTML content
        String htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        // Convert HTML to PDF
        PdfDocument pdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent);
        // Save PDF to file
        pdfDocument.saveAs("output.pdf");
        // Assert PDF generation
        assertTrue(new File("output.pdf").exists());
    }
}
Private org As import
Private Shared As import
Private com As import
Private java As import
Private java As import
Friend Class PdfGenerationTest
	Test Public Sub testPdfGeneration()
		' Define HTML content
		Dim htmlContent As String = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
		' Convert HTML to PDF
		Dim pdfDocument As PdfDocument = PdfDocument.renderHtmlAsPdf(htmlContent)
		' Save PDF to file
		pdfDocument.saveAs("output.pdf")
		' Assert PDF generation
		assertTrue((New File("output.pdf")).exists())
	End Sub
End Class
VB   C#

Dans cet exemple, nous créons un cas de test testPdfGeneration.()qui utilise IronPDF pour convertir du contenu HTML en document PDF. Le test vérifie ensuite que le fichier PDF est généré avec succès en vérifiant son existence sur le système de fichiers.

Junit Java(Comment cela fonctionne pour les développeurs) : Figure 5 - Sortie de la console lors de l'exécution du test Junit ci-dessus, vérifiant la création réussie de fichiers PDF

Conclusion

JUnit est un framework de test polyvalent pour Java qui simplifie le processus d'écriture et d'exécution de tests automatisés. En tirant parti de ses fonctionnalités telles que les tests paramétrés, la gestion des exceptions et les annotations, les développeurs peuvent garantir la fiabilité et la robustesse de leur base de code.

IntégrerIronPDFavec JUnit permet des tests complets de la fonctionnalité de génération de PDF au sein des applications Java, garantissant que les documents générés respectent les normes de qualité et adhèrent aux spécifications. En combinant la puissance de JUnit et d'IronPDF, les développeurs peuvent rationaliser le processus de test et fournir des logiciels de haute qualité en toute confiance.

Pour en savoir plus sur la façon de rendre une chaîne HTML en PDF, visitez le lien suivant.lien.

< PRÉCÉDENT
Socket io .NET (Comment ça fonctionne pour les développeurs)
SUIVANT >
Microsoft.Extensions.DependencyInjection .NET 6 (Working With PDF)