Thanks a lot, I use now snapshop #69.

Andrea


2008/6/30, Maurice Marrink <[EMAIL PROTECTED]>:
>
> Apparently the junit tests in wicket 1.3.4 trigger a call to destroy
> twice. Since i am setting several fields to null this causes the
> second destroy to fail.
> As a quick fix i have put some nullchecks in the code. A new snapshot
> should be available shortly (see
> http://wicketstuff.org/teamcity/overview.html ). You can force maven
> to download this new snapshot by using the -U flag.
>
> I will check why wicket is now doing a dual destroy and correct this
> if possible.
>
> Maurice
>
> On Mon, Jun 30, 2008 at 12:48 PM, Andrea Jahn
> <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > I was using Wicket 1.3.3 and tester.destroy() worked fine.
> >
> > But I had to change to Wicket 1.3.4 (because of WICKET-1558) and now I
> get
> > the
> > following Exception when tester.destroy() is called:
> >
> > java.lang.NullPointerException
> >  at
> >
> org.apache.wicket.security.swarm.actions.SwarmActionFactory.destroy(SwarmActionFactory.java:502)
> >  at
> >
> org.apache.wicket.security.WaspWebApplication.onDestroy(WaspWebApplication.java:107)
> >  at org.apache.wicket.Application.internalDestroy(Application.java:890)
> >  at
> >
> org.apache.wicket.protocol.http.WebApplication.internalDestroy(WebApplication.java:448)
> >  at
> >
> org.apache.wicket.protocol.http.MockWebApplication.destroy(MockWebApplication.java:674)
> >  at test.front.LoginTest.tearDown(LoginTest.java:65)
> >  at junit.framework.TestCase.runBare(TestCase.java:140)
> >  at junit.framework.TestResult$1.protect(TestResult.java:110)
> >  at junit.framework.TestResult.runProtected(TestResult.java:128)
> >  at junit.framework.TestResult.run(TestResult.java:113)
> >  at junit.framework.TestCase.run(TestCase.java:124)
> >  at junit.framework.TestSuite.runTest(TestSuite.java:232)
> >  at junit.framework.TestSuite.run(TestSuite.java:227)
> >  at
> >
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
> >  at
> >
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
> >  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'm using Wasp/Swarm 1.3-SNAPSHOT.
> >
> > Thanks
> > Andrea
> >
> >
> >
> > 2008/6/20, Maurice Marrink <[EMAIL PROTECTED]>:
> >>
> >> In the teardown do tester.destroy() this will clean up everything.
> >>
> >> Maurice
> >>
> >> On Fri, Jun 20, 2008 at 10:16 AM, Andrea Jahn
> >> <[EMAIL PROTECTED]> wrote:
> >> > Hi,
> >> > Thank you very much for the Java solution :) !
> >> > I have also corrected the place to return a new custom session :).
> >> >
> >> > Now the first test case runs without problems,
> >> > but in the second and third test case I get the following exception:
> >> >
> >> > java.lang.IllegalArgumentException: Another ActionFactory is already
> >> > registered with the following key:
> >> test.front.MyWicketTester$1:MyAppl-login
> >> >  at
> >> >
> >>
> org.apache.wicket.security.actions.Actions.registerActionFactory(Actions.java:80)
> >> >  at
> >> >
> >>
> org.apache.wicket.security.swarm.actions.SwarmActionFactory.<init>(SwarmActionFactory.java:86)
> >> >  at
> >> >
> >>
> xxx.yyy.zzz.front.security.MyActionFactory.<init>(MyActionFactory.java:28)
> >> >  at
> >> >
> >>
> xxx.yyy.zzz.front.MyApplication.setupActionFactory(MyApplication.java:177)
> >> >  at
> >> >
> >>
> org.apache.wicket.security.swarm.SwarmWebApplication.init(SwarmWebApplication.java:96)
> >> >  at xxx.yyy.zzz.front.MyApplication.init(MyApplication.java:38)
> >> >  at
> >> org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:526)
> >> >  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 test.front.MyWicketTester.<init>(MyWicketTester.java:27)
> >> >  at test.front.LoginTest.setUp(LoginTest.java:50)
> >> >  at junit.framework.TestCase.runBare(TestCase.java:132)
> >> >
> >> >
> >> > I tried to unregister the hive, but anyway the exception is thrown.
> >> > How can I remove the ActionFactory ? Or can I avoid, that it is
> >> registered
> >> > again ?
> >> >
> >> > Thanks again
> >> > Andrea
> >> >
> >> >
> >> >
> >> > public class MyWicketTester extends WicketTester
> >> > {
> >> >  public MyWicketTester(final ApplicationContextMock appctx)
> >> >  {
> >> >    super(new MyApplication() {
> >> >      @Override
> >> >      protected void initSpring() {
> >> >
> >> >        addComponentInstantiationListener(new
> >> SpringComponentInjector(this,
> >> > appctx));
> >> >        InjectorHolder.getInjector().inject(this);
> >> >      };
> >> >
> >> >      @Override
> >> >      public Session newSession(final Request request, Response
> response)
> >> {
> >> >       ...
> >> >      }
> >> >    });
> >> >  }
> >> > }
> >> >
> >> >
> >> > public class LoginTest extends TestCase
> >> > {
> >> >  private WicketTester tester;
> >> >  private FormTester form;
> >> >  private PersonService personServiceMock;
> >> >  private LocationService locationServiceMock;
> >> >
> >> >  @Before
> >> >  public void setUp() throws Exception {
> >> >
> >> >    personServiceMock = EasyMock.createStrictMock(PersonService.class);
> >> >    locationServiceMock =
> >> EasyMock.createStrictMock(LocationService.class);
> >> >
> >> >    ApplicationContextMock appctx = new ApplicationContextMock();
> >> >    appctx.putBean("personService", personServiceMock);
> >> >    appctx.putBean("locationService", locationServiceMock);
> >> >
> >> >    tester = new MyWicketTester(appctx);
> >> >  }
> >> >
> >> >  @After
> >> >  public void tearDown() {
> >> >
> >> >    // unregister factory
> >> >
> >> >
> >>
> HiveMind.unregisterHive(((MyApplication)tester.getApplication()).getHiveKey());
> >> >  }
> >> >
> >> >
> >> >  @Test
> >> >  public void testLoginPageRender(){
> >> >  ...
> >> >  }
> >> >
> >> >  @Test
> >> >  public void testInvalidLogin(){
> >> >  ...
> >> >
> >> >  }
> >> >
> >> >  @Test
> >> >  public void testValidLogin(){
> >> >  ...
> >> >
> >> >  }
> >> >
> >> >
> >> >
> >> >
> >> > 2008/6/19, Maurice Marrink <[EMAIL PROTECTED]>:
> >> >>
> >> >> Sorry never done much with spring, but according to this
> >> >>
> >> >>
> >>
> http://cwiki.apache.org/WICKET/spring.html#Spring-UnitTestingtheProxyApproach
> >> >> you were on the right track.
> >> >> So if you do your spring config in a protected method which is called
> >> >> by your application.init. you can override that method in your junit
> >> >> tests to use the mock springcontext.
> >> >>
> >> >> Maurice
> >> >>
> >> >> On Thu, Jun 19, 2008 at 11:44 AM, Andrea Jahn
> >> >> <[EMAIL PROTECTED]> wrote:
> >> >> > My initial problem was, that I have different application contexts
> in
> >> the
> >> >> > test environment
> >> >> > and in the Web application and therefore different calls of
> >> >> > addComponentInstantiationListener.
> >> >> >
> >> >> > In my test environment I have a ApplicationContextMock, which I
> have
> >> to
> >> >> add
> >> >> > as second parameter:
> >> >> > addComponentInstantiationListener(*new*
> >> SpringComponentInjector(*this*,
> >> >> > appctx));
> >> >> >
> >> >> > In the Web application the application context for the Spring beans
> is
> >> >> > configured in
> >> >> > application-context.xml.
> >> >> >
> >> >> > So when I call MyApplication.init() from the test environment I get
> >> the
> >> >> > exception
> >> >> > "No WebApplicationContext found: noContextLoaderListener
> registered?",
> >> >> > when addComponentInstantiationListener(new
> >> SpringComponentInjector(this))
> >> >> is
> >> >> > called.
> >> >> >
> >> >> > Perhaps is there another possibility to add the appctx in the test
> >> >> > environment
> >> >> > or another place to call addComponentInstantiationListener(new
> >> >> > SpringComponentInjector(this))
> >> >> > in the Web application ??
> >> >> >
> >> >> > Thanks
> >> >> > Andrea
> >> >> >
> >> >> >
> >> >>
> >> >
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to