Junit在java中测试void方法

时间:2016-01-31 05:27:57

标签: junit

如何在二叉搜索树中编写此函数的测试用例?

void insert(String key){

    root=insertRec(root,key);
}

1 个答案:

答案 0 :(得分:1)

你的方法做了些什么。它显然通过插入rec(ord?)并以某种方式重新评估root是什么来改变对象的状态。因此,为了测试它,你应该能够以某种方式确定新的状态,例如......

public void insert_should_create_new_record_and_set_root() {
     assertThat( myObject.getRec( originalRoot) ).isNull();

     Object originalRoot = myObject.getRoot();
     myObject.insert("xyz");

     assertThat( myObject.getRec( originalRoot) ).isEqualTo( "xyz"); // using AssertJ style here
     assertThat( myObject.getRoot().value() ).isNotEqualTo( originalRoot );      
}

另一方面,如果您无法从外部检查状态,那么您将遇到问题。但不知何故,你的班级必须与外界沟通,不是吗?如果你真的认为你不能检查新的状态,那么你将不得不提供更多这个类的代码,因为这个答案当然是非常一般的(这意味着“猜测”)。