【发布时间】:2017-07-04 14:34:04
【问题描述】:
以这个函数为例:
public static int[] mergeSort(int[] array, int lo, int hi) {
if (lo == hi) {
return array;
}
int mid = (lo + hi) / 2;
mergeSort(array, lo, mid);
mergeSort(array, mid, hi);
merge(array, lo, mid + 1, hi);
return array;
}
如您所见,我想在测试中模拟函数merge。
有可能吗?
【问题讨论】:
-
可以使用间谍!在此处查看示例 (stackoverflow.com/questions/4860475/…)。但是一些测试框架不支持对静态方法的监视!
-
静态方法的单元测试往往笨拙且脆弱。模拟框架的局限性使其成为不可能。您最好将此作为实例方法并将
merge作为依赖项注入。那么单元测试就非常简单和健壮了。
标签: java unit-testing recursion