Вот моя проблема:Возможно ли протестировать метод, который использует элементы uiBinder XML с JUnit?
У меня есть метод, называемый desactiveNavLinks
, что desactive все виджеты в моем sideBarContainer (HTMLPanel), этот метод работает perfecly. Так вот код моего 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, поэтому мой вопрос:
Есть ли способ проверить UiBinder виджеты только с JUnit или единственным способом является использование тестов GWTTestCase?
Я не ставил его в свой вопрос, но я использую его. Я обновлю его. Я думаю, что мне нужно запустить тесты Gwt TestCase, если я хочу, чтобы мой виджет получал все дочерние элементы alll из uiBinder Xml, но мне нужно подтверждение, которое невозможно с помощью тестов JUnit. – Pintouch
Oohhhh, ОК. Итак, вы хотите * на самом деле узнать количество детей на боковой панели, как определено в UiBinder? Не проверить, применяется ли стиль и т. Д.? –
Я зарегистрировал его, и он печатает нуль. Кажется, что процесс инициализации uiBinder не выполняется с помощью тестов JUnit ... – Pintouch