Tapestry:如果有@InjectComponent,如何使用JUnit4进行测试

代码帮助

我正在将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树进行测试?任何帮助,将不胜感激。谢谢。

Java启动器

对包含组件的页面进行单元测试可能很困难,它通常需要向组件中添加仅用于测试的特殊构造函数。当组件来自外部来源(即挂毯核心)时,这将变得更加困难。

您是否考虑过硒测试我经常发现单元测试页面需要付出很多努力才能获得很少的收益。

如果您真的要对该页面进行单元测试,建议您重构代码以隔离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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果有多个微服务,应该如何集成测试它们?

如果有条件则测试摘要

如果有新版本,如何强制SPA客户端进行硬刷新?

如果有内表,则使用纯 JavaScript 进行过滤或搜索

如果有重复行,则进行MySQL更新

如果有条件进行测验

如果有条件使用React Router V4更改路线

如果有很多具有相同类的元素,如何使用JavaScript获得特定元素?

如果有人使用Java应用程序,如何部署

如果有人尝试创建您已经使用的互斥锁,如何得到通知?

如何在XSLT中使用内联条件式(如果有的话)?

如何(如果有的话)在.NET Framework项目中使用DinkToPdf nuget

如果有多个默认值,linux如何选择使用哪个网关?

如果有两个可能的答案可以接受,如何正确使用while循环?

如果有多个条目,如何使用按钮输入每个tkinter条目?

如何使用 SAS 从姓氏(如果有)中删除世代后缀?

如果有重复,如何总结记录?

如何申请如果有以下结果的条件?

如何编写查询以获取特价(如果有)

如果有日期,如何根据文档提取蒸气?

如果有QueryException,如何继续循环?

Laravel 5.6 如果有User的记录如何删除

如果有条件,如何遍历列表?

如果有可用的RAM,如何清空交换空间?

如何从画布中删除上传的图像(如果有)?

使用Scanner库,如果有陈述,简单的任务?

如果有类,则使用jQuery获取类名

检查哪个部署(如果有)正在使用秘密

如果有多个 .vimrc 将使用什么?