Thanks to Taha, I managed to make the tests run by adding the following line
in the CheetahPageTester constructor:
  *registry.getService(ApplicationContext.class).getBean("cheetahService");*
This had the effect of loading the Spring ApplicationContext and the
cheetahService Spring bean (which are lazilly loaded by default).
Furthermore, I altered the way the Spring config file was loaded as follows:
*  servletContext.addInitParameter("contextConfigLocation",
"cheetah-service-application-context.xml");*
I was then able to run the tests.
Regards,
Julien.
P.S. I must admit I lost a great deal of time with two test libraries on the
classpath: testng and junit. Maven does not like that at all.

2011/7/18 Taha Hafeez <tawus.tapes...@gmail.com>

> Can you share the full source code as a zip/jar, I will look into that
> (Sorry, too busy to create an new example)
>
> regards
> Taha
>
> On Mon, Jul 18, 2011 at 5:30 PM, Julien Martin <bal...@gmail.com> wrote:
> > Hello again,
> > Do I need to add my CheetahPageTester to some configuration somewhere?
> > J.
> >
> > 2011/7/18 Julien Martin <bal...@gmail.com>
> >
> >> Hello Taha,
> >>
> >> Thanks for your replies!
> >>
> >> Regarding Tapestry + Spring + tests, you put me on the right track yet I
> >> have not being able to get it to work.
> >>
> >> Here is my PageTester class:
> >>
> >> *package com.cheetah.web;
> >>
> >> import org.apache.tapestry5.TapestryFilter;
> >> import org.apache.tapestry5.internal.spring.SpringModuleDef;
> >> import org.apache.tapestry5.ioc.Registry;
> >> import org.apache.tapestry5.ioc.def.ModuleDef;
> >> import org.apache.tapestry5.test.PageTester;
> >> import org.springframework.mock.web.MockServletContext;
> >>
> >>
> >> public class CheetahPageTester extends PageTester {
> >>
> >>     private MockServletContext servletContext;
> >>
> >>     public CheetahPageTester(String appPackage, String appName, String
> >> contextPath, Class... moduleClasses) {
> >>         super(appPackage, appName, contextPath, moduleClasses);
> >>         Registry registry = this.getRegistry();
> >>         // Set Tapestry registry in mock servlet context
> >>
> servletContext.setAttribute(TapestryFilter.REGISTRY_CONTEXT_NAME,
> >> registry);
> >>     }
> >>
> >>     public CheetahPageTester(String appPackage, String appName) {
> >>         super(appPackage, appName);
> >>     }
> >>
> >>     @Override
> >>     protected ModuleDef[] provideExtraModuleDefs() {
> >>         // Set spring configuration files location
> >>         servletContext = new MockServletContext();
> >>         servletContext.addInitParameter("contextConfigLocation",
> >> "classpath*:cheetah-web-application-context.xml");
> >>         return new ModuleDef[]{
> >>                 new SpringModuleDef(servletContext)
> >>         };
> >>     }
> >>
> >>
> >> }*
> >>
> >> and the relevant bit in my test class:
> >> * CheetahPageTester tester = new CheetahPageTester(appPackage, appName,
> >> "src/main/webapp");*
> >>
> >> I get exactly the same exception as before... Any idea why? What else
> might
> >> I have got wrong?
> >>
> >> Regards,
> >> Julien.
> >>
> >>
> >> 2011/7/18 Taha Hafeez <tawus.tapes...@gmail.com>
> >>
> >>> Hi
> >>>
> >>> Follow this :
> >>>
> http://spreadthesource.com/2010/08/start-spring-application-context-for-your-tapestry-unit-tests/
> >>>
> >>> regards
> >>> Taha
> >>>
> >>> On Mon, Jul 18, 2011 at 3:01 AM, Julien Martin <bal...@gmail.com>
> wrote:
> >>> > Hello,
> >>> >
> >>> > I am not able to test my Tapestry application. What is very odd is
> that
> >>> the
> >>> > exception is not thrown when I run the app in a browser.
> >>> >
> >>> > Can anyone please help?
> >>> >
> >>> > Thanks in advance,
> >>> >
> >>> > Julien.
> >>> >
> >>> > Here is the test class:
> >>> > *
> >>> > public class CreateJobPostingTest {
> >>> >
> >>> >    @Test
> >>> >    public void test1() {
> >>> >        String appPackage = "com.cheetah.web";
> >>> >        String appName = "app";
> >>> >        PageTester tester = new PageTester(appPackage, appName,
> >>> > "src/main/webapp");
> >>> >        Document doc =
> tester.renderPage("recruiters/createjobposting");
> >>> >        Element createJobPostingForm =
> >>> > doc.getElementById("createJobPostingForm");
> >>> >        Map<String, String> fieldValues = new HashMap<String,
> String>();
> >>> >        fieldValues.put("jobPostingTitle", "Développeur
> >>> > java/Tapestry/Junit");
> >>> >        fieldValues.put("jobPostingBody", "Poste de de développeur
> >>> agile/XP
> >>> > qui travaillera en TDD exclusivement");
> >>> >        Document docFromForm = tester.submitForm(createJobPostingForm,
> >>> > fieldValues);
> >>> >        assertTrue(docFromForm.toString().contains("TDD
> exclusivement"));
> >>> >    }
> >>> >
> >>> >    @Test
> >>> >    @Ignore
> >>> >    public void test2() {
> >>> >        assertTrue(false);
> >>> >    }
> >>> > }*
> >>> >
> >>> > Here is the class being tested:
> >>> >
> >>> > *
> >>> > import com.cheetah.domain.JobPosting;
> >>> > import org.apache.tapestry5.EventConstants;
> >>> >
> >>> > import org.apache.tapestry5.annotations.*;
> >>> > import org.apache.tapestry5.corelib.components.BeanEditForm;
> >>> >
> >>> > public class CreateJobPosting {
> >>> >
> >>> >    @InjectComponent
> >>> >    private BeanEditForm createJobPostingForm;
> >>> >
> >>> >    @InjectPage
> >>> >    private ConfirmationPage confirmationPage;
> >>> >
> >>> >    @SessionState
> >>> >    @Property
> >>> >    private JobPosting jobPosting;
> >>> >
> >>> >    @Log
> >>> >    @OnEvent(value = EventConstants.VALIDATE)
> >>> >    void validateCreateJobPostingForm() {
> >>> >        if (createJobPostingForm.isValid()) {
> >>> >            if (jobPosting.getJobPostingTitle().contains("toto")) {
> >>> >                createJobPostingForm.recordError("pas de toto svp");
> >>> >            }
> >>> >        }
> >>> >    }
> >>> >
> >>> >    @OnEvent(value = EventConstants.SUCCESS)
> >>> >    @DiscardAfter
> >>> >    Object displayConfirmationPage() {
> >>> >        this.confirmationPage.setupJobPosting(this.jobPosting);
> >>> >        return ConfirmationPage.class;
> >>> >    }
> >>> >
> >>> >
> >>> > }*
> >>> >
> >>> >
> >>> > Here is the second "ConfirmationPage" page:
> >>> > *
> >>> > import com.cheetah.domain.JobPosting;
> >>> > import com.cheetah.service.CheetahService;
> >>> > import org.apache.tapestry5.EventConstants;
> >>> > import org.apache.tapestry5.annotations.DiscardAfter;
> >>> > import org.apache.tapestry5.annotations.OnEvent;
> >>> > import org.apache.tapestry5.annotations.Persist;
> >>> > import org.apache.tapestry5.annotations.Property;
> >>> > import org.apache.tapestry5.ioc.annotations.Inject;
> >>> > import org.apache.tapestry5.ioc.annotations.InjectService;
> >>> > import org.apache.tapestry5.services.ApplicationStateManager;
> >>> >
> >>> > public class ConfirmationPage {
> >>> >
> >>> >    @Persist
> >>> >    @Property
> >>> >    private JobPosting jobPosting;
> >>> >
> >>> >    @Inject
> >>> >    private CheetahService cheetahService;
> >>> >
> >>> >    @Inject
> >>> >    private ApplicationStateManager applicationStateManager;
> >>> >
> >>> >    void setupJobPosting(JobPosting jobPosting) {
> >>> >        this.jobPosting = jobPosting;
> >>> >    }
> >>> >
> >>> >    @OnEvent(value = EventConstants.ACTION)
> >>> >    @DiscardAfter
> >>> >    Object saveJobPosting() {
> >>> >        cheetahService.persistJobPosting(jobPosting);
> >>> >        applicationStateManager.set(JobPosting.class, null);
> >>> >        return JobPostingsTable.class;
> >>> >    }
> >>> > }*
> >>> >
> >>> > and here is the exception I get:
> >>> >
> >>> > 2879 [main] ERROR org.apache.tapestry5.ioc.Registry - Error obtaining
> >>> > injected value for field
> >>> > com.cheetah.web.pages.recruiters.ConfirmationPage.cheetahService: No
> >>> service
> >>> > implements the interface com.cheetah.service.CheetahService.
> >>> > 2879 [main] ERROR org.apache.tapestry5.ioc.Registry - Operations
> trace:
> >>> > 2879 [main] ERROR org.apache.tapestry5.ioc.Registry - [ 1]
> Constructing
> >>> > instance of page class
> com.cheetah.web.pages.recruiters.CreateJobPosting
> >>> > 2880 [main] ERROR org.apache.tapestry5.ioc.Registry - [ 2] Assembling
> >>> root
> >>> > component for page recruiters/CreateJobPosting
> >>> > 2880 [main] ERROR org.apache.tapestry5.ioc.Registry - [ 3]
> Transforming
> >>> > component class com.cheetah.web.pages.recruiters.ConfirmationPage
> >>> > 2880 [main] ERROR org.apache.tapestry5.ioc.Registry - [ 4] Injecting
> >>> field
> >>> > cheetahService
> >>> > 2887 [main] ERROR
> >>> > org.apache.tapestry5.services.TapestryModule.RequestExceptionHandler
> -
> >>> > Processing of request failed with uncaught exception: Exception
> >>> assembling
> >>> > root component of page recruiters/CreateJobPosting: Could not convert
> >>> > 'jobPosting' into a component parameter binding: Exception generating
> >>> > conduit for expression 'jobPosting': java.lang.NoClassDefFoundError:
> >>> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage;
> >>> > java.lang.RuntimeException: Exception assembling root component of
> page
> >>> > recruiters/CreateJobPosting: Could not convert 'jobPosting' into a
> >>> component
> >>> > parameter binding: Exception generating conduit for expression
> >>> 'jobPosting':
> >>> > java.lang.NoClassDefFoundError:
> >>> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage;
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:124)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.access$000(ComponentAssemblerImpl.java:38)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:82)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:79)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1063)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleRootComponent(ComponentAssemblerImpl.java:77)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:182)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:174)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1063)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:173)
> >>> >    at $PageLoader_13139f4802e.loadPage($PageLoader_13139f4802e.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.java:81)
> >>> >    at $PageSource_13139f4802d.getPage($PageSource_13139f4802d.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.NonPoolingRequestPageCacheImpl.get(NonPoolingRequestPageCacheImpl.java:74)
> >>> >    at
> >>> $RequestPageCache_13139f4802c.get($RequestPageCache_13139f4802c.java)
> >>> >    at
> >>> $RequestPageCache_13139f48026.get($RequestPageCache_13139f48026.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:55)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.services.TapestryModule$36.handle(TapestryModule.java:2326)
> >>> >    at
> >>> >
> >>>
> $PageRenderRequestHandler_13139f4802a.handle($PageRenderRequestHandler_13139f4802a.java)
> >>> >    at
> >>> >
> >>>
> $PageRenderRequestHandler_13139f48024.handle($PageRenderRequestHandler_13139f48024.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)
> >>> >    at
> >>> >
> >>>
> $ComponentRequestHandler_13139f48025.handlePageRender($ComponentRequestHandler_13139f48025.java)
> >>> >    at
> >>> >
> >>>
> $ComponentRequestHandler_13139f48004.handlePageRender($ComponentRequestHandler_13139f48004.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
> >>> >    at $Dispatcher_13139f48006.dispatch($Dispatcher_13139f48006.java)
> >>> >    at $Dispatcher_13139f47ffe.dispatch($Dispatcher_13139f47ffe.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:321)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
> >>> >    at
> >>> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:984)
> >>> >    at
> >>> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:974)
> >>> >    at
> >>> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
> >>> >    at
> >>> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.test.EndOfRequestCleanupFilter.service(EndOfRequestCleanupFilter.java:42)
> >>> >    at
> >>> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:80)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
> >>> >    at
> >>> $RequestHandler_13139f48000.service($RequestHandler_13139f48000.java)
> >>> >    at
> >>> $RequestHandler_13139f47fef.service($RequestHandler_13139f47fef.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.test.PageTester.renderPageAndReturnResponse(PageTester.java:209)
> >>> >    at
> >>> org.apache.tapestry5.test.PageTester.renderPage(PageTester.java:179)
> >>> >    at
> >>> >
> >>>
> com.cheetah.web.pages.CreateJobPostingTest.test1(CreateJobPostingTest.java:21)
> >>> >    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>> >    at
> >>> >
> >>>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>> >    at
> >>> >
> >>>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >>> >    at java.lang.reflect.Method.invoke(Method.java:597)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> >>> >    at
> >>> >
> >>>
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> >>> >    at
> >>> >
> >>>
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
> >>> >    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> >>> >    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> >>> >    at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> >>> >    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> >>> >    at
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> >>> >    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> >>> >    at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> >>> >    at
> >>> >
> >>>
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71)
> >>> >    at
> >>> >
> >>>
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199)
> >>> >    at
> >>> >
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62)
> >>> >    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>> >    at
> >>> >
> >>>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>> >    at
> >>> >
> >>>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >>> >    at java.lang.reflect.Method.invoke(Method.java:597)
> >>> >    at
> >>> com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
> >>> > Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException:
> >>> Could
> >>> > not convert 'jobPosting' into a component parameter binding:
> Exception
> >>> > generating conduit for expression 'jobPosting':
> >>> > java.lang.NoClassDefFoundError:
> >>> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage; [at
> >>> > classpath:com/cheetah/web/pages/recruiters/CreateJobPosting.tml, line
> 2]
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.BindingSourceImpl.newBinding(BindingSourceImpl.java:82)
> >>> >    at
> >>> >
> $BindingSource_13139f48043.newBinding($BindingSource_13139f48043.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PageElementFactoryImpl.newBinding(PageElementFactoryImpl.java:184)
> >>> >    at
> >>> >
> >>>
> $PageElementFactory_13139f4803a.newBinding($PageElementFactory_13139f4803a.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.PageLoaderImpl$12.execute(PageLoaderImpl.java:859)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.runActions(ComponentAssemblerImpl.java:217)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:103)
> >>> >    ... 76 more
> >>> > Caused by:
> >>> > org.apache.tapestry5.internal.services.PropertyExpressionException:
> >>> > Exception generating conduit for expression 'jobPosting':
> >>> > java.lang.NoClassDefFoundError:
> >>> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage;
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.build(PropertyConduitSourceImpl.java:1325)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.create(PropertyConduitSourceImpl.java:1208)
> >>> >    at
> >>> >
> >>>
> $PropertyConduitSource_13139f480cc.create($PropertyConduitSource_13139f480cc.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.bindings.PropBindingFactory.newBinding(PropBindingFactory.java:49)
> >>> >    at
> >>> >
> $BindingFactory_13139f480cd.newBinding($BindingFactory_13139f480cd.java)
> >>> >    at
> >>> >
> $BindingFactory_13139f48092.newBinding($BindingFactory_13139f48092.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.BindingSourceImpl.newBinding(BindingSourceImpl.java:78)
> >>> >    ... 82 more
> >>> > Caused by: java.lang.RuntimeException:
> java.lang.NoClassDefFoundError:
> >>> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage;
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.buildAdapter(PropertyAccessImpl.java:103)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.getAdapter(PropertyAccessImpl.java:68)
> >>> >    at
> >>> >
> $PropertyAccess_13139f47ff6.getAdapter($PropertyAccess_13139f47ff6.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.infoForPropertyOrPublicField(PropertyConduitSourceImpl.java:1028)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.infoForMember(PropertyConduitSourceImpl.java:1021)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.createGetterAndSetter(PropertyConduitSourceImpl.java:451)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.createAccessors(PropertyConduitSourceImpl.java:435)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl$PropertyConduitBuilder.createInstance(PropertyConduitSourceImpl.java:290)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.PropertyConduitSourceImpl.build(PropertyConduitSourceImpl.java:1321)
> >>> >    ... 88 more
> >>> > Caused by: java.lang.NoClassDefFoundError:
> >>> > Lcom/cheetah/web/pages/recruiters/ConfirmationPage;
> >>> >    at java.lang.Class.getDeclaredFields0(Native Method)
> >>> >    at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
> >>> >    at java.lang.Class.getDeclaredField(Class.java:1880)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.isScalaGetterMethod(PropertyAccessImpl.java:196)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.addPropertyIfScalaGetterMethod(PropertyAccessImpl.java:145)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.addPropertiesFromScala(PropertyAccessImpl.java:138)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.buildAdapter(PropertyAccessImpl.java:97)
> >>> >    ... 96 more
> >>> > Caused by: java.lang.ClassNotFoundException: caught an exception
> while
> >>> > obtaining a class file for
> >>> com.cheetah.web.pages.recruiters.ConfirmationPage
> >>> >    at javassist.Loader.findClass(Loader.java:359)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass(ComponentInstantiatorSourceImpl.java:102)
> >>> >    at javassist.Loader.loadClass(Loader.java:311)
> >>> >    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> >>> >    ... 103 more
> >>> > Caused by:
> >>> org.apache.tapestry5.internal.services.TransformationException:
> >>> > Error obtaining injected value for field
> >>> > com.cheetah.web.pages.recruiters.ConfirmationPage.cheetahService: No
> >>> service
> >>> > implements the interface com.cheetah.service.CheetahService.
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl$1.run(ComponentClassTransformerImpl.java:208)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:50)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:47)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:46)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:56)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1058)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:119)
> >>> >    at
> >>> >
> >>>
> $ComponentClassTransformer_13139f48015.transformComponentClass($ComponentClassTransformer_13139f48015.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.onLoad(ComponentInstantiatorSourceImpl.java:212)
> >>> >    at javassist.Loader.findClass(Loader.java:340)
> >>> >    ... 106 more
> >>> > Caused by: org.apache.tapestry5.ioc.internal.OperationException:
> Error
> >>> > obtaining injected value for field
> >>> > com.cheetah.web.pages.recruiters.ConfirmationPage.cheetahService: No
> >>> service
> >>> > implements the interface com.cheetah.service.CheetahService.
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:102)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:69)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:46)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:56)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1058)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:54)
> >>> >    at
> >>> >
> >>>
> $ComponentClassTransformWorker_13139f4804d.transform($ComponentClassTransformWorker_13139f4804d.java)
> >>> >    at
> >>> >
> >>>
> $ComponentClassTransformWorker_13139f4803e.transform($ComponentClassTransformWorker_13139f4803e.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl$1.run(ComponentClassTransformerImpl.java:202)
> >>> >    ... 116 more
> >>> > Caused by: java.lang.RuntimeException: Error obtaining injected value
> >>> for
> >>> > field
> com.cheetah.web.pages.recruiters.ConfirmationPage.cheetahService:
> >>> No
> >>> > service implements the interface com.cheetah.service.CheetahService.
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.transform.InjectWorker$1.run(InjectWorker.java:75)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:50)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:47)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)
> >>> >    ... 123 more
> >>> > Caused by: java.lang.RuntimeException: No service implements the
> >>> interface
> >>> > com.cheetah.service.CheetahService.
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:670)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:45)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.services.ServiceInjectionProvider.provideInjection(ServiceInjectionProvider.java:40)
> >>> >    at
> >>> >
> >>>
> $InjectionProvider_13139f48056.provideInjection($InjectionProvider_13139f48056.java)
> >>> >    at
> >>> >
> >>>
> $InjectionProvider_13139f48044.provideInjection($InjectionProvider_13139f48044.java)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.internal.transform.InjectWorker$1.run(InjectWorker.java:67)
> >>> >    ... 126 more
> >>> >
> >>> > java.lang.NullPointerException
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.test.PageTester.validateElementName(PageTester.java:286)
> >>> >    at
> >>> >
> >>>
> org.apache.tapestry5.test.PageTester.submitFormAndReturnResponse(PageTester.java:421)
> >>> >    at
> >>> org.apache.tapestry5.test.PageTester.submitForm(PageTester.java:399)
> >>> >    at
> >>> >
> >>>
> com.cheetah.web.pages.CreateJobPostingTest.test1(CreateJobPostingTest.java:26)
> >>> >    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>> >    at
> >>> >
> >>>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>> >    at
> >>> >
> >>>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> >>> >    at
> >>> >
> >>>
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> >>> >    at
> >>> >
> >>>
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
> >>> >    at
> >>> >
> >>>
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
> >>> >    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> >>> >    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> >>> >    at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> >>> >    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> >>> >    at
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> >>> >    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> >>> >    at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> >>> >    at
> >>> >
> >>>
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71)
> >>> >    at
> >>> >
> >>>
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199)
> >>> >    at
> >>> >
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62)
> >>> >    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>> >    at
> >>> >
> >>>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>> >    at
> >>> com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
> >>> >
> >>> >
> >>> > Process finished with exit code 255
> >>> >
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> >>> For additional commands, e-mail: users-h...@tapestry.apache.org
> >>>
> >>>
> >>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to