i testing using junit4 eclipse. want test function expandall
public void expandall(treeexpansionmodel<treedata> expansionmodel) { list<treenode<treedata>> roots = gettreemodel().getrootnodes(); (treenode<treedata> root : roots) { expandallnode(root, expansionmodel); } } private void expandallnode(treenode<treedata> node, treeexpansionmodel<treedata> expansionmodel) { if (node.gethaschildren()) { expansionmodel.markexpanded(node); (treenode child : node.getchildren()) { expandallnode(child, expansionmodel); // recursive call } } }
the problem having expansionmodel. in program(not test), pass in expansionmodel using tree. here code fragment java.
@injectcomponent private tree tree; public void onexpandall() { expansionmodel = tree.getexpansionmodel(); treefunction.expandall(expansionmodel); ajaxresponserenderer.addrender(treezone); }
i have tried in test using
tree = new tree(); expansionmodel = tree.getexpansionmodel(); testing.expandall(expansionmodel);
but expansionmodel null. how go testing @injectcomponent tree? appreciated. thanks.
unit testing of pages contain components can difficult, requires adding special constructors components required testing. becomes harder when components external source (ie tapestry-core).
have considered selenium testing instead? find unit testing pages requires lots of effort little gain.
if want unit test page, suggest refactor code isolate tree
dependency:
@injectcomponent private tree tree; public void onexpandall() { onexpandall(tree.getexpansionmodel()); } protected void onexpandall(treeexpansionmodel expansionmodel) { treefunction.expandall(expansionmodel); ajaxresponserenderer.addrender(treezone); }
then can unit test second onexpandall
method without needing tree
instance using defaulttreeexpansionmodel or similar.
Comments
Post a Comment