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] > >