Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在gradle项目中使用Junit和Mockito动态测试来自文件(xml、json、csv、txt)的测试数据_Java_Mockito_Junit5 - Fatal编程技术网

Java 在gradle项目中使用Junit和Mockito动态测试来自文件(xml、json、csv、txt)的测试数据

Java 在gradle项目中使用Junit和Mockito动态测试来自文件(xml、json、csv、txt)的测试数据,java,mockito,junit5,Java,Mockito,Junit5,我目前正在执行一项与Junit和mockito相关的任务 当前状态: 我的一个同事使用Junit、Mockito和Gradle开发了一些测试用例。现在,在开发代码时,他在测试条件时做了什么,他通过了硬编码的值,但现在有一个新的变更请求(CR) 假设: 我们假设所有硬编码的值都将存储在某个资源文件夹中。现在这个资源文件夹将包含任何类型的文件,因为数据可以是Json、Xml、CSv、txt或任何类型 要求: 我们想从任何类型(Json、Xml、CSV、txt)的文件中读取这些数据并对其进行解析,然后

我目前正在执行一项与Junit和mockito相关的任务

当前状态: 我的一个同事使用Junit、Mockito和Gradle开发了一些测试用例。现在,在开发代码时,他在测试条件时做了什么,他通过了硬编码的值,但现在有一个新的变更请求(CR)

假设: 我们假设所有硬编码的值都将存储在某个资源文件夹中。现在这个资源文件夹将包含任何类型的文件,因为数据可以是Json、Xml、CSv、txt或任何类型

要求: 我们想从任何类型(Json、Xml、CSV、txt)的文件中读取这些数据并对其进行解析,然后我们需要使用注释添加这些数据,而不需要使用getter setter,在这里我们使用硬编码值只是为了隐藏硬编码值,然后使用动态值运行测试用例


必须做什么才能从文件中读取数据,根据数据类型解析数据,然后使用注释而不是使用getter setter获取值?

在JUnit5中,您可以运行参数化测试。您可以看到一个内联csv值的示例:

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

class PriceCalculatorTest {

  PriceCalculator classUnderTest;

  @BeforeEach
  void setUp() throws Exception {
    classUnderTest = new PriceCalculator();
  }

  @ParameterizedTest
  @CsvSource({"0.0, 13", "5.0, 14", "5.0,26", "15.0,27", "15.0,64", "10.0,65"})
  void testGetPrice(double expected, int age) {
    assertEquals(expected, classUnderTest.getPrice(age), 0.01D);
  }
}
如果要使用外部数据文件,则有一种稍微不同的语法:

@CsvFileSource(resources = "/two-column.csv", numLinesToSkip = 1)

这假设您使用的是一个csv文件,文件头在第一行。如果您想使用另一种文件格式,您需要实现自己的
ArgumentsProvider

如果我想从JSON或XML而不是csv文件中读取测试数据,那么JSON或XML可以使用哪些注释来读取数据,然后解析数据,然后使用junit进行测试?