我正在为我的方法编写J单元测试用例。
A.java
void resetToolbar(final ListSelectionModel lastSelectionModel) {
// attempt to restore the previous page
if (toolbar != null && lastSelectionModel != null) {
gridPanel.setSelectionModel(lastSelectionModel);
}
// Issue occur here..... In PagingToolbar.
toolbar = new PagingToolbar();
}
PagingToolbar.java
class PagingToolbar {
@Inject
private transient I18nUtils i18n;
/**
* Creates a new paging toolbar.
*/
public PagingToolbar() {
super();
setDisplayingItemsText(i18n.getText(this, "facebook"));
// here i18n get null and throws null pointer-exception.
}
ATest.java
class editorModule extends AbstractModule {
@Override
protected void configure() {
bind(I18nUtils.class)
.to((Class < ? extends I18nUtils >) A.class);
}
}
@Test(groups = { "unit" })
public class ATest extends AbstractModule {
@Test
public void resetToolbar(){
I18nUtils i18n = createNiceMock(I18nUtils.class);
Injector injector = Guice.createInjector(new editorModule());
A editor = injector.getInstance(A.class);
// Invoke
A tt = new A();
tt.resetToolbar(listselectmodelMock);
}
}
注意:在resetToolbar()的类中,我必须使用new关键字调用pageingToolbar。
因为您正在用PagingToolbar
自己创建new PagingToolbar();
。
Provider
在您的A.java
:
class A {
private final Provider<PagingToolbar> pagingToolbarProvider;
private PagingToolbar toolbar;
@Inject
A(Provider<PagingToolbar> pagingToolbarProvider) {
this.pagingToolbarProvider = pagingToolbarProvider;
this.toolbar = pagingToolbarProvider.get();
}
void resetToolbar(final ListSelectionModel lastSelectionModel) {
// attempt to restore the previous page
if (toolbar != null && lastSelectionModel != null) {
gridPanel.setSelectionModel(lastSelectionModel);
}
toolbar = pagingToolbarProvider.get();
}
}