我正在尝试在下面测试我的toString方法,但出现错误。我试图使用调试器,但那也冻结了我。这是故障跟踪:
java.lang.StackOverflowError
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at Rectangle1.BinaryNode.toString(BinaryNode.java:158)
at Rectangle1.BinaryNode.toString(BinaryNode.java:161)
我的测试方法(当我注释掉最后一个断言时,测试通过):
public void testToString() {
assertEquals("null, 15, 10", node3.toString());
node3.setLeft(node2);
assertEquals("10, 15, 10", node3.toString());
node3.left().setRight(node2);
assertEquals(10, node3.left().right().key(), 0.1);
assertNull(node3.left().left());
assertEquals("10, 10, 15, 10", node3.toString());
}
这是toString()方法:
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
if (left != null)
{
builder.append(left.toString() + ", ");
}
builder.append(key);
if (right != null)
{
builder.append(", " + right.toString());
}
return builder.toString();
}
一个节点声明为:
private BinaryNode<Integer, String> node1;
private BinaryNode<Integer, String> node2;
private BinaryNode<Integer, String> node3;
this.node1 = new BinaryNode<>();
this.node2 = new BinaryNode<>(10, "bonjr");
this.node3 = new BinaryNode<>(15, "Chika", node1, node2);