为单元测试创​​建数据示例列表

thi*_*eer 0 java junit unit-testing

我正在尝试为一个方法创建一个单元测试,该方法将 arrayList 作为输入,并返回不同的 arrayList 作为输出。

根据我对单元测试的理解,我需要制作数据,然后断言它们是正确的,但是创建一个具有足够大小以满足方法要求的 arrayList 似乎很复杂。

待测试方法

public static List<String> processList(List<String> input){
    //process array
    return new ArrayList<String>();//return new list with new/modded data
}
Run Code Online (Sandbox Code Playgroud)

我可以做类似的事情

ArrayList<String> inputList = new ArrayList();
inputList.add("data1");
...
inputList.add("data30");
Run Code Online (Sandbox Code Playgroud)

或者编写一些生成假数组的代码

for(int i=0;i<30;i++){
   inputList.add("data"+i);//actual code will be slightly more complicated
}
Run Code Online (Sandbox Code Playgroud)

但我需要几行来进行一些计算和变化,因为数据并不像我在这个问题中出现的那么简单。

第一个解决方案将占用大量空间,第二个解决方案似乎需要对其进行测试,因此违背了单元测试的目的。

我还考虑将数组元素保存在项目可访问的文本文件中,对于每种输入类型,我将访问所需的文本文件并将行转换为数组。

基本上,我如何创建多个数组,每个数组大约有 10-30 个元素,以对单个方法进行单元测试,该方法采用单个数组输入而不造成混乱?

nom*_*moa 7

如果您希望测试断言多个输入,那么您需要为每个单独的测试输入提供预期结果。对于 junit,这通常是使用参数化测试来完成的。

如果您担心测试数据会使测试代码变得臃肿,那么将固定装置编码到文件中可能是个好主意,一些库(例如json固定装置)可能会有所帮助。

您的问题还表明您想在某种程度上生成测试用例,我认为这接近随机测试的概念。