Hi everyone,

I'm setting up an app with wicket 1.3.3
I have my Application class defined this way, to use Spring  injection with
annotations

public class WicketApplication extends SpringWebApplication {

    /**
     * Constructor
     */
    public WicketApplication() {
    }

    @Override
    protected void init() {
        super.init();
        configureSpringInjection();

        // configure bookmarkable pages
        mountBookmarkablePage("/login", LoginPage.class);
        mountBookmarkablePage("/home", HomePage.class);
    }

    protected void configureSpringInjection() {
        addComponentInstantiationListener(new
SpringComponentInjector(this));
    }

    @Override
    public Class<? extends Page> getHomePage() {
        return HomePage.class;
    }

    @Override
    public Session newSession(Request request, Response response) {
        return new WicketSession(request);
    }

}


Then I subclassed it for testing:

public class MockWicketApplication extends WicketApplication {

    private AnnotApplicationContextMock mockContext;

    @Override
    protected void configureSpringInjection() {

        mockContext = new AnnotApplicationContextMock();

        addComponentInstantiationListener(new SpringComponentInjector(this,
                mockContext));
    }

    public AnnotApplicationContextMock getMockContext() {
        return mockContext;
    }

}

And defined an abstract Test class:

public abstract class BaseWicketTest extends TestCase {

    protected WicketTester tester;

    protected AnnotApplicationContextMock mockContext;

    protected void setUp() throws Exception {

        MockWicketApplication webapp = new MockWicketApplication();

        tester = new WicketTester(webapp);

        mockContext = ((MockWicketApplication) tester.getApplication())
                .getMockContext();
    }
}

and finally the Test itself:

public class TestHomePage extends BaseWicketTest
{
    public void testRenderMyPage()
    {
        mockContext.putBean("userAuthenticationSrv", new
MockUserAuthenticationSrv());

        //start and render the test page
        tester.startPage(HomePage.class);

        //assert rendered page class
        tester.assertRenderedPage(HomePage.class);

        //assert rendered label component
        tester.assertLabel("message", "Some text");
    }
}

but then when i try to run the test case the result is the following
stacktrace:

java.lang.IllegalStateException: No WebApplicationContext found: no
ContextLoaderListener registered?
    at
org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:95)
    at
org.apache.wicket.spring.SpringWebApplication.internalInit(SpringWebApplication.java:77)
    at
org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:523)
    at
org.apache.wicket.protocol.http.MockWebApplication.<init>(MockWebApplication.java:151)
    at
org.apache.wicket.util.tester.BaseWicketTester.<init>(BaseWicketTester.java:205)
    at
org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:308)
    at
org.apache.wicket.util.tester.WicketTester.<init>(WicketTester.java:291)
    at com.globant.web.page.BaseWicketTest.setUp(BaseWicketTest.java:19)
    at junit.framework.TestCase.runBare(TestCase.java:128)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:120)
    at junit.framework.TestSuite.runTest(TestSuite.java:230)
    at junit.framework.TestSuite.run(TestSuite.java:225)
    at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
    at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

I must be making a mistake somewhere, but i cant get it. I checked the
examples, the wiki, everywhere.

Any idea? Any thoughts? Will be greatly appreciated :)

JG

Reply via email to