【问题标题】:Junit Dynamic Test Cases data reading from file?Junit动态测试用例从文件中读取数据?
【发布时间】:2020-05-03 16:20:20
【问题描述】:

我有一个场景,使用来自文本文件的有效负载测试 api。文件中的每一行代表一个有效负载。如何根据上述场景动态生成测试用例。

我尝试如下调用另一个测试,但我只能看到参数测试通过。

import com.jayway.restassured.http.ContentType;
import com.jayway.restassured.response.Response;

import org.junit.Before;
import org.junit.Test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static com.jayway.restassured.RestAssured.given;

public class ExampleTest
{


    private TestUtil testUtil;


    String payload;


    @Before
    public void init()
    {
            testUtil = new TestUtil();
    }

    @Test
    public void runAllTests() throws IOException
    {


        List<String> request = getFileDataLineByLine();

        for(String fileRequest:request)
        {
            payload=fileRequest;
            if(null!=payload) {
                testExampleTest();
            }
        }
    }

    @Test
    public void testExampleTest()
    {

        String uri = "http://localhost:8080/url";
        Response response = given()
                .contentType(ContentType.JSON)
                .body(payload)
                .post(uri)
                .then()
                .statusCode(200)
                .extract()
                .response();

    }


    private List<String>  getFileDataLineByLine() throws IOException {

        File file = testUtil.getFileFromResources();
        if (file == null)
            return null;
        String line;
        List<String> stringList = new ArrayList<>();
        try (FileReader reader = new FileReader(file);
             BufferedReader br = new BufferedReader(reader))
        {
            while ((line = br.readLine()) != null)
            {
                stringList.add(line);
                System.out.println(line);
            }
        }

        return stringList;
    }

文件读取类:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;

public class TestUtil
{

    public File getFileFromResources()throws IOException
    {

        TestUtil testUtil = new TestUtil();
        File file = testUtil.getFileFromResources("testdata.txt");
        return file;
    }


    // get file from classpath, resources folder
    private File getFileFromResources(String fileName) {

        ClassLoader classLoader = getClass().getClassLoader();

        URL resource = classLoader.getResource(fileName);
        if (resource == null) {
            throw new IllegalArgumentException("file is not found!");
        } else {
            return new File(resource.getFile());
        }

    }



}

如何通过从文件中获取输入来动态生成测试用例?

【问题讨论】:

  • 搜索参数化测试,例如,您可以使用 csv 作为测试源,其中包含要加载的文件名。

标签: java junit integration-testing junit4


【解决方案1】:

如果您可以转换您的文件JUnitParams 支持从 CSV 加载数据。

使用上述链接存储库中的示例:

public class PersonTest {

    @Test
    @FileParameters("src/test/resources/test.csv")
    public void loadParamsFromCsv(int age, String name) {
        assertFalse(age > 120);
    } 
}

【讨论】:

    猜你喜欢
    • 2014-10-06
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2011-03-22
    • 2012-05-19
    • 1970-01-01
    相关资源
    最近更新 更多