我将用一个例子更好地解释这个问题:
假设我有一个函数,它接收一个X个整数的数组和一个额外的整数,该整数包含一个起始位置,它从该位置开始计算数组中10个数字的平均值,但忽略0值,并在数组从起始位置到结尾不包含10个或更多值时返回-1000000:
假设我有一个函数,它接收一个X个整数的数组和一个额外的整数,该整数包含一个起始位置,它从该位置开始计算数组中10个数字的平均值,但忽略0值,并在数组从起始位置到结尾不包含10个或更多值时返回-1000000:
public double calculateAverage(ArrayList<Integer>, int startingPosition){
//functionLogic
return myAverage;
}
我对单元测试不是很熟悉,但我建议在这里进行以下测试:
- 使用一个20个整数列表和起始位置为
5
的测试(应返回从5
到14
的10个数字的平均值) - 使用一个20个整数列表和起始位置为
15
的测试(应返回-1000000
) - 使用一个9个整数列表的测试(无论起始位置如何,应返回
-1000000
) - 使用一个20个整数列表的测试,其中一半数字为
0
,起始位置为5
(应返回5
到14
之间数字的平均值,不计算0
)。 - 使用一个20个整数列表的测试,其中一半数字为
0
,起始位置为15
(应返回-1000000
)。
这些测试可能不足够,或者太多了,或者只是糟糕的测试,请随时提出任何改进意见,因为我相信大多数人对单元测试比我更了解。
我的问题:
我是否需要编写5个不同的JUnit测试函数?是编写只有5个断言的1个更好?还是将其分成2组和3组?
这里推荐的风格是什么?
感谢大家的耐心。