Junit动态测试用例从文件中读取数据?

问题描述 投票:0回答:1

我有一个使用来自文本文件的有效载荷来测试api的场景,文件中的每一行代表一个有效载荷。

我试着像下面这样从其他测试中调用一个测试,但我只能看到paraent测试通过。

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

    }



}

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

java junit integration-testing junit4
1个回答
0
投票

如果你能转换你的文件 JUnitParams 支持从CSV加载数据。

以上面链接的仓库为例。

public class PersonTest {

    @Test
    @FileParameters("src/test/resources/test.csv")
    public void loadParamsFromCsv(int age, String name) {
        assertFalse(age > 120);
    } 
}
© www.soinside.com 2019 - 2024. All rights reserved.