Home >Java >javaTutorial >Data-driven testing using the JUnit unit testing framework

Data-driven testing using the JUnit unit testing framework

WBOY
WBOYOriginal
2024-04-18 12:09:01734browse

The JUnit unit testing framework supports data-driven testing, using reusable data sources to dynamically run test cases. Steps include: Create a test data source, such as a CSV file. Create a test class and specify the data source using @RunWith(Parameterized.class) and @Parameters. Write test methods and inject data using @Test and @Parameter. Use Parameterized annotations to automatically traverse data sources and inject test data.

Data-driven testing using the JUnit unit testing framework

Using JUnit unit testing framework for data-driven testing

Data-driven testing is an automated testing technology that can be repeated through Use the data source to dynamically run test cases. JUnit is a widely used Java unit testing framework that provides support for data-driven testing.

Steps

  1. Create a test data source

First, create a class or text file to Store test data. Can use CSV, JSON or other formats. For example:

// data.csv
name,age
John,25
Mary,30
  1. Create a test class

Create a test class for the class to be tested and specify it using the Parameterized annotation Data source path:

@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 annotation will automatically iterate through each row in the data source and inject the value into the test method using the @Parameter annotation.

  1. Write a test method

Write a test method using the @Test annotation and use the injected data in it:

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

Practical Case

To show data-driven testing in action, let’s test a simple User class that contains name and age fields:

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

After running the test, JUnit will automatically iterate through each row in the data.csv file and run ## with those values #testUser() method.

The above is the detailed content of Data-driven testing using the JUnit unit testing framework. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn