Maison >Java >javaDidacticiel >Tests basés sur les données à l'aide du cadre de tests unitaires JUnit

Tests basés sur les données à l'aide du cadre de tests unitaires JUnit

WBOY
WBOYoriginal
2024-04-18 12:09:01734parcourir

Le cadre de tests unitaires JUnit prend en charge les tests basés sur les données, en utilisant des sources de données réutilisables pour exécuter dynamiquement des cas de test. Les étapes comprennent : Créer une source de données de test, telle qu'un fichier CSV. Créez une classe de test et spécifiez la source de données à l'aide de @RunWith(Parameterized.class) et @Parameters. Écrivez des méthodes de test et injectez des données à l'aide de @Test et @Parameter. Utilisez des annotations paramétrées pour parcourir automatiquement les sources de données et injecter des données de test.

Tests basés sur les données à laide du cadre de tests unitaires JUnit

Tests basés sur les données à l'aide du cadre de tests unitaires JUnit

Les tests basés sur les données sont une technique de test automatisée qui exécute dynamiquement des cas de test via des sources de données réutilisables. JUnit est un framework de tests unitaires Java largement utilisé qui prend en charge les tests basés sur les données.

Étapes

  1. Créer une source de données de test

Tout d'abord, créez une classe ou un fichier texte pour stocker les données de test. Peut utiliser CSV, JSON ou d'autres formats. Par exemple :

// data.csv
name,age
John,25
Mary,30
  1. Créez une classe de test

Créez une classe de test pour la classe à tester et utilisez l'annotation Paramétrée pour spécifier le chemin de la source de données : Parameterized 注解指定数据源路径:

@RunWith(Parameterized.class)
public class DataDrivenTest {

    @Parameter
    public String name;

    @Parameter(1)
    public int age;

    @Parameters
    public static Iterable<Object[]> data() {
        return new CsvFileSource(new File("data.csv"));
    }
}

Parameterized 注解将自动遍历数据源中的每一行,并使用 @Parameter 注解将值注入到测试方法中。

  1. 编写测试方法

使用 @Test 注解编写测试方法,并在其中使用注入的数据:

@Test
public void testNameAndAge() {
    assertEquals("John", name);
    assertTrue(age == 25);
}

实战案例

为了展示数据驱动测试的实际应用,让我们测试一个简单的 User 类,其中包含 nameage 字段:

public class User {

    private String name;
    private int age;
    
    // getters and setters
}
@RunWith(Parameterized.class)
public class UserTest {

    @Parameter
    public String name;

    @Parameter(1)
    public int age;

    @Parameters
    public static Iterable<Object[]> data() {
        return new CsvFileSource(new File("data.csv"));
    }

    @Test
    public void testUser() {
        User user = new User();
        user.setName(name);
        user.setAge(age);
        assertEquals(name, user.getName());
        assertTrue(age == user.getAge());
    }
}

运行测试后,JUnit 将自动遍历 data.csv 文件中的每一行,并使用这些值运行 testUser()rrreee

Paramétré L'annotation parcourra automatiquement chaque ligne de la source de données et injectera la valeur dans la méthode de test à l'aide de l'annotation @Parameter. 🎜
    🎜🎜Ecrire une méthode de test🎜🎜🎜🎜Utilisez l'annotation @Test pour écrire une méthode de test et utiliser les données injectées dedans : 🎜rrreee🎜🎜Cas pratique 🎜🎜🎜 Pour montrer les tests basés sur les données en action, testons une simple classe User avec les champs name et age : 🎜rrreeerrreee🎜Exécuter après testing, JUnit parcourra automatiquement chaque ligne du fichier data.csv et exécutera la méthode testUser() avec ces valeurs. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn