0

私はEclipseでJunit4を使用してテストしています。関数 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 
          } 
       } 
} 

私が抱えている問題は、expansionModel です。私のプログラム(テストではない)では、ツリーを使用してexpansionModelを渡します。これは、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);

しかし、私が得たexpansionModelはnullです。@InjectComponent ツリーでテストするにはどうすればよいですか? どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

1

コンポーネントを含むページの単体テストは難しい場合があります。多くの場合、テストにのみ必要な特別なコンストラクターをコンポーネントに追加する必要があります。コンポーネントが外部ソース (つまり、タペストリーコア) からのものである場合、これはさらに難しくなります。

代わりにセレンテストを検討しましたか? ページの単体テストでは、わずかな利益のために多くの労力が必要になることがよくあります。

このページを本当に単体テストしたい場合は、コードをリファクタリングしてTree依存関係を分離することをお勧めします。

@InjectComponent
private Tree tree;

public void onExpandAll() {
    onExpandAll(tree.getExpansionModel());
}

protected void onExpandAll(TreeExpansionModel expansionModel) {
    treeFunction.expandAll(expansionModel);
    ajaxResponseRenderer.addRender(treeZone);
}

次に、 DefaultTreeExpansionModelなどを使用して、インスタンスをonExpandAll必要とせずに 2 番目のメソッドを単体テストできます。Tree

于 2013-07-15T08:46:09.337 に答える