3

ここに私の問題があります:

desactiveNavLinkssideBarContainer (HTMLPanel) のすべてのウィジェットを非アクティブにするメソッドがあり、このメソッドは完全に機能します。だからここに私の uiBinder XML のコードがあります:

MainSideBarImpl.ui.xml :

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
<ui:style>
.centerDiv {
    text-align: center;
}

.logo {
    height: 15%;
    width: 15%;
}

.logoName {
    width: 65%;
}
</ui:style>
<g:HTMLPanel>
    <div class="sidebar-nav">

        <div class="{style.centerDiv}">
            <b:Image url="GA/img/img1.png" styleName="{style.logoName}"></b:Image>
        </div>
        <div class="sidebar-avatar big">
            <b:Image ui:field="userPic"></b:Image>
        </div>
        <g:HTMLPanel ui:field="sideBarContainer">

            <nav id="sidebar" class="sidebar nav-collapse collapse">
                <ul id="side-nav" class="side-nav">

                    <b:NavLink icon="HOME" ui:field="homeNavLink">Clients</b:NavLink>

                    <li class="panel">
                        <b:AccordionGroup heading="Client" ui:field="accordionGrp">
                        </b:AccordionGroup>
                    </li>
                    <li>
                        <b:base.IconAnchor icon="EDIT" ui:field="benchNavLink">Benchmark</b:base.IconAnchor>
                    </li>
                    <li>
                        <a class="nav-header can-active">
                            <i class="icon-star"></i>
                            Favoris
                        </a>
                    </li>
                </ul>
            </nav>
        </g:HTMLPanel>


    </div><!-- sidebar -->
</g:HTMLPanel>

MainSideBarImpl.java でテストしたいメソッド:

public void desactiveNavLinks() {
    //sideBarContainer is a HTMLPanel declared in the same Classe with @UiField annotation.
    for(int i = 0;i<sideBarContainer.getWidgetCount();i++){
        if(sideBarContainer.getWidget(i).getStyleName().contains("active")){
            sideBarContainer.getWidget(i).removeStyleName("active");
            sideBarContainer.getWidget(i).getParent().removeStyleName("active");
        }
    }
    for(SiteNavLinkEditor w : sitesEditor.getEditors()){
        w.setActive(false);
    }

}

ここに私の UnitTest メソッドがあります:

@RunWith(GwtMockitoTestRunner.class)
public class MainSideBarTest{
    @GwtMock
    private HTMLPanel sideBarContainer;
    private MainSideBarImpl widget;

    @Before
    public void setUp(){
        widget = new MainSideBarImpl();
    }

    @Test
    public void testDesactiveNavLinks(){
        System.out.println("Widgets count = "+sideBarContainer.getWidgetCount()); //That is printing 0 and should print all the widgets inside of the HTMLPanel
        widget.desactiveNavLinks();
    }
}

クラスが UiBinder プロセスでインスタンス化されていないように見えるので、私の質問は次のとおりです。

JUnitだけでUiBinderウィジェットをテストする方法はありますか、それともGwtTestCaseテストを使用する唯一の方法ですか?

4

1 に答える 1

1

はい、使用する必要がありますGwtTestCase。これは、UiBinder によって作成されている DOM を検査するためです。UiBinder テンプレートにバインドされた Java クラスで定義されている動作をテストしたいだけの場合は、JUnit + gwtmockito で十分です。

于 2014-11-27T08:07:21.407 に答える