这是我的问题:
我有一个名为desactiveNavLinks
的方法可以解析我的sideBarContainer(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测试?
答案 0 :(得分:1)
是的,您必须使用GwtTestCase
。这是因为您需要检查由UiBinder创建的DOM。如果您只想测试绑定到UiBinder模板的Java类中定义的行为,那么JUnit + gwtmockito就足够了。