好的,我有这个代码:
public void TraverseTree(TreeNode node) {
TraverseTree(node.getLeftChild());
System.out.println(node.getKey());
TraverseTree(node.getRightChild());
}
这实际上遍历树的节点并打印它们。我正要写一个测试用例时突然想到如何对没有返回类型的函数进行单元测试?
在更改代码使其值得“单元测试”之后,它看起来像这样:
public ArrayList<Object> TraverseTree(TreeNode node, ArrayList<Object> array) {
if(array == null)
array = new ArrayList<Object>();
traverseTree(node.getLeftChild(), array);
array.add(node.getKey())
traverseTree(node.getRightChild(), array);
return array;
}
现在我在想,这是正确的方法吗?对于每次递归调用,都有一个 ArrayList 对象被推上堆栈这一事实又如何呢?这是一个好方法吗?如果树包含数千个键怎么办?
我真的很想知道有没有更好的方法来做到这一点?是否可以对我的第一个代码示例(不返回任何内容的代码示例)进行单元测试?我的测试用例只是 1)它是否以正确的顺序返回?如果树为空会发生什么?ETC