Daniel, What you're doing should work, but I think you're giving your GuiceComponentInjector a null Injector. Unit tests don't go through web.xml to set up its context listeners, so your GuiceServletContextListener never has a chance to construct and register an Injector with the ServletContext.
Dan On Wed, Oct 10, 2012 at 5:30 PM, Daniel Watrous <[email protected]>wrote: > Hi, > > I've integrated Guice into Wicket successfully, but I'm struggling > with the unittests. I'm not sure how to get the injector into my > HomePage class. Here's my setup. > > I'm using GuiceFilter with a GuiceServletContextListener. That creates > the injector and a ServletModule which defines the WicketApplication. > I followed: > http://code.google.com/p/google-guice/wiki/ServletModule > > Here's some of MyGuiceServletConfig extends GuiceServletContextListener > > @Override > protected Injector getInjector() { > return Guice.createInjector(createServletModule(), new > MongoHoneybadgerModule()); > } > > private ServletModule createServletModule() { > return new ServletModule() { > ... > > In my WicketApplication extends WebApplication I have this init() method > > @Override > public void init() > { > super.init(); > Injector bootStrapInjector = (Injector) > this.getServletContext().getAttribute(Injector.class.getName()); > getComponentInstantiationListeners().add(new > GuiceComponentInjector(this, bootStrapInjector)); > } > > Now, in my HomePage.java class I have > > public class HomePage extends WebPage { > private static final long serialVersionUID = 1L; > @Inject private Injector injector; > > public HomePage(final PageParameters parameters) { > super(parameters); > SomeType myobj = injector.getInstance(SomeType.class); > > add(new Label("version", myobj.getValue())); > } > } > > This all runs great inside a web container as a servlet. > > The PROBLEM: I'm getting a NullPointerException on the line where I > reference the injector: > SomeType myobj = injector.getInstance(SomeType.class); > > My test class is what was generated by the wicket quickstart. I'm not > sure how to make an injector available in setUp. > > @Before > public void setUp() { > tester = new WicketTester(new WicketApplication()); > } > > Any ideas? > > Thanks, > Daniel > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
