我正在将Junit4与Eclipse结合使用进行测试。我想测试功能expandAll
public void expandAll(TreeExpansionModel<TreeData> expansionModel)
{
List<TreeNode<TreeData>> roots = getTreeModel().getRootNodes();
for (TreeNode<TreeData> root : roots)
{
expandAllNode(root, expansionModel);
}
}
private void expandAllNode(TreeNode<TreeData> node, TreeExpansionModel<TreeData> expansionModel)
{
if (node.getHasChildren())
{
expansionModel.markExpanded(node);
for (TreeNode child : node.getChildren())
{
expandAllNode(child, expansionModel); // this is a recursive call
}
}
}
我遇到的问题是expandingModel。在我的程序(非测试)中,我使用tree传递了expandingModel。这是来自Java的代码片段。
@InjectComponent
private Tree tree;
public void onExpandAll()
{
expansionModel = tree.getExpansionModel();
treeFunction.expandAll(expansionModel);
ajaxResponseRenderer.addRender(treeZone);
}
我已经在测试中尝试使用
tree = new Tree();
expansionModel = tree.getExpansionModel();
testing.expandAll(expansionModel);
但是我得到的expandingModel为空。如何使用@InjectComponent树进行测试?任何帮助,将不胜感激。谢谢。
对包含组件的页面进行单元测试可能很困难,它通常需要向组件中添加仅用于测试的特殊构造函数。当组件来自外部来源(即挂毯核心)时,这将变得更加困难。
您是否考虑过硒测试?我经常发现单元测试页面需要付出很多努力才能获得很少的收益。
如果您真的要对该页面进行单元测试,建议您重构代码以隔离Tree
依赖项:
@InjectComponent
private Tree tree;
public void onExpandAll() {
onExpandAll(tree.getExpansionModel());
}
protected void onExpandAll(TreeExpansionModel expansionModel) {
treeFunction.expandAll(expansionModel);
ajaxResponseRenderer.addRender(treeZone);
}
然后,您可以使用DefaultTreeExpansionModel或类似实例对第二种onExpandAll
方法进行单元测试,而无需Tree
实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句