I  really don't know how to do it , Thanks in advance.This is the code:
web.xml
<!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
      "http://java.sun.com/dtd/web-app_2_3.dtd";>
<web-app>
    <display-name>My Tapestry Application Test For T5.0.5</display-name>


    <context-param>
        <param-name>tapestry.app-package</param-name>
        <param-value>cn.crc.pjblog</param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
        /WEB-INF/conf/applicationContext.xml
        </param-value>
        </context-param>

    <filter>
        <filter-name>app</filter-name>
        <filter-class>org.apache.tapestry.TapestryFilter</filter-class>
        </filter>

    <filter-mapping>
        <filter-name>app</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>
            org.springframework.web.util.Log4jConfigListener
        </listener-class>
    </listener>
    <!-- sys -->
    <listener>
        <listener-class>cn.crc.pjblog.servlet.SysListener</listener-class>
    </listener>
    <!-- Spring Framework -->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
</web-app>
AppModule.java
@SubModule(SpringModule.class)
public class AppModule {}
SpringModule.java
public class SpringModule {

    public static void bind(ServiceBinder binder){

        binder.bind(ObjectProvider.class,SpringObjectProvider.class)
        .withId("SpringObjectProvider");
    }

    public static WebApplicationContext build(@InjectService("Context")
Context context){

        WebApplicationContext springContext = null;
        try {

            springContext = (WebApplicationContext) context.getAttribute(
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

        } catch (Exception e) {
            // TODO: handle exception
            throw new RuntimeException(
SpringMessages.failureObtainingContext(e),e);
        }
        if (springContext == null) throw new RuntimeException(
SpringMessages.missingContext());
        return springContext;
    }

     /**
     * Contributes a provider named "Spring".
     */
        public static void contributeMasterObjectProvider(
                        OrderedConfiguration<ObjectProvider> configuration,
                        ObjectLocator locator) {
                configuration.add("spring", locator
                                .autobuild(SpringObjectProvider.class));
        }

SpringObjectProvider.java

public class SpringObjectProvider implements ObjectProvider {
     private final Log _log;

        private final WebApplicationContext _context;

        private boolean _beansNamesLoaded = false;

        private final Map<String, String> _beanNames =
newCaseInsensitiveMap();

        public SpringObjectProvider(Log log,
@InjectService("WebApplicationContext")
        WebApplicationContext context)
        {
            _log = log;

            _context = context;
        }

        private synchronized void loadBeanNames()
        {
            if (_beansNamesLoaded) return;

            for (String name : _context.getBeanDefinitionNames())
            {
                _beanNames.put(name, name);
            }

            _log.info(SpringMessages.contextStartup(_beanNames.keySet()));

            _beansNamesLoaded = true;
        }

        /**
         * The expression is the name of a spring bean inside the context.
         */
        public <T> T provide(Class<T> objectType, AnnotationProvider
annotationProvider,
                ObjectLocator locator)
        {
            SpringBean annotation = annotationProvider.getAnnotation(
SpringBean.class);

            if (annotation == null) return null;

            String beanName = annotation.value();

            // Need to defer loading bean names to avoid some bootstrapping
problems.

            loadBeanNames();

            // Attempt to convert from the base insensitive name to the name
as defined by Spring
            // (which is, to my knowledge) case sensitive.
            String effectiveName = _beanNames.containsKey(beanName) ?
_beanNames.get(beanName)
                    : beanName;

            try
            {
                Object raw = _context.getBean(effectiveName, objectType);

                return objectType.cast(raw);
            }
            catch (Exception ex)
            {
                throw new RuntimeException(SpringMessages.beanAccessFailure(
                        effectiveName,
                        objectType,
                        ex), ex);
            }
        }

}



2007/9/27, Joel Wiegman <[EMAIL PROTECTED]>:
>
> Without seeing any source, I can only guess that you're injecting
> WebApplicationContext somewhere in your application and your SpringModule
> isn't loading that service correctly?  Tough to say without source.
>
> -----Original Message-----
> From: Doublel [mailto:[EMAIL PROTECTED]
> Sent: Thursday, September 27, 2007 1:04 AM
> To: Tapestry users
> Subject: Re: Using PageTester with tapestry-spring
>
> Thanks ! the problem is resolved. But I ran  into this :
>
> [ERROR] WebApplicationContext Construction of service
> WebApplicationContext
> failed: Error invoking service builder method
> cn.crc.spring.SpringModule.build(Context) (at SpringModule.java:34) (for
> service 'WebApplicationContext'): An exception occurred obtaining the Spring
> WebApplicationContext: getAttribute() is not supported for
> ContextForPageTester.
> java.lang.RuntimeException: Error invoking service builder method
> cn.crc.spring.SpringModule.build(Context) (at SpringModule.java:34) (for
> service 'WebApplicationContext'): An exception occurred obtaining the Spring
> WebApplicationContext: getAttribute() is not supported for
> ContextForPageTester.
>     at
> org.apache.tapestry.ioc.internal.ServiceBuilderMethodInvoker.createObject(
> ServiceBuilderMethodInvoker.java:87)
>     at
> org.apache.tapestry.ioc.internal.SingletonServiceLifecycle.createService(
> SingletonServiceLifecycle.java:31)
>     at
>
> org.apache.tapestry.ioc.internal.LifecycleWrappedServiceCreator.createObject
> (LifecycleWrappedServiceCreator.java:54)
>     at
> org.apache.tapestry.ioc.internal.InterceptorStackBuilder.createObject
> (InterceptorStackBuilder.java:54)
>     at
>
> org.apache.tapestry.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject
> (RecursiveServiceCreationCheckWrapper.java:60)
>     at
>
> org.apache.tapestry.ioc.internal.services.JustInTimeObjectCreator.createObject
> (JustInTimeObjectCreator.java:61)
>     at
>
> $WebApplicationContext_1154558bc95._delegate($WebApplicationContext_1154558bc95.java)
>     at
>
> $WebApplicationContext_1154558bc95.getBeanDefinitionNames($WebApplicationContext_1154558bc95.java)
>     at cn.crc.spring.SpringObjectProvider.loadBeanNames(
> SpringObjectProvider.java:49)
>     at cn.crc.spring.SpringObjectProvider.provide(
> SpringObjectProvider.java
> :73)
>     at
> $ObjectProvider_1154558bc97.provide($ObjectProvider_1154558bc97.java)
>     at
> $ObjectProvider_1154558bc90.provide($ObjectProvider_1154558bc90.java)
>     at org.apache.tapestry.internal.services.InjectWorker.inject(
> InjectWorker.java:80)
>     at org.apache.tapestry.internal.services.InjectWorker.transform(
> InjectWorker.java:53)
>     at
>
> $ComponentClassTransformWorker_1154558bcc9.transform($ComponentClassTransformWorker_1154558bcc9.java)
>     at
>
> $ComponentClassTransformWorker_1154558bcc6.transform($ComponentClassTransformWorker_1154558bcc6.java)
>     at
>
> org.apache.tapestry.internal.services.ComponentClassTransformerImpl.transformComponentClass
> (ComponentClassTransformerImpl.java:131)
>     at
>
> $ComponentClassTransformer_1154558bcc0.transformComponentClass($ComponentClassTransformer_1154558bcc0.java)
>     at
>
> org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.onLoad
> (ComponentInstantiatorSourceImpl.java:177)
>     at javassist.Loader.findClass(Loader.java:340)
>     at
>
> org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass
> (ComponentInstantiatorSourceImpl.java:85)
>     at javassist.Loader.loadClass(Loader.java:311)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>     at
>
> org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.findClass
> (ComponentInstantiatorSourceImpl.java:254)
>     at
>
> org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.findInstantiator
> (ComponentInstantiatorSourceImpl.java:240)
>     at
>
> $ComponentInstantiatorSource_1154558bcb3.findInstantiator($ComponentInstantiatorSource_1154558bcb3.java)
>     at
>
> org.apache.tapestry.internal.services.PageElementFactoryImpl.newRootComponentElement
> (PageElementFactoryImpl.java:319)
>     at
>
> $PageElementFactory_1154558bcbe.newRootComponentElement($PageElementFactory_1154558bcbe.java)
>     at
>
> org.apache.tapestry.internal.services.PageLoaderProcessor.loadRootComponent
> (
> PageLoaderProcessor.java:405)
>     at org.apache.tapestry.internal.services.PageLoaderProcessor.loadPage(
> PageLoaderProcessor.java:390)
>     at org.apache.tapestry.internal.services.PageLoaderImpl.loadPage(
> PageLoaderImpl.java:59)
>     at $PageLoader_1154558bcbb.loadPage($PageLoader_1154558bcbb.java)
>     at org.apache.tapestry.internal.services.PagePoolImpl.checkout(
> PagePoolImpl.java:70)
>     at $PagePool_1154558bcba.checkout($PagePool_1154558bcba.java)
>     at org.apache.tapestry.internal.services.RequestPageCacheImpl.get(
> RequestPageCacheImpl.java:44)
>     at
> $RequestPageCache_1154558bcb7.get($RequestPageCache_1154558bcb7.java)
>     at
> $RequestPageCache_1154558bcaf.get($RequestPageCache_1154558bcaf.java)
>     at
> org.apache.tapestry.internal.services.PageRenderRequestHandlerImpl.handle(
> PageRenderRequestHandlerImpl.java:55)
>     at
>
> $PageRenderRequestHandler_1154558bca5.handle($PageRenderRequestHandler_1154558bca5.java)
>     at org.apache.tapestry.internal.test.PageLinkInvoker.invoke(
> PageLinkInvoker.java:57)
>     at org.apache.tapestry.test.PageTester.invoke(PageTester.java:184)
>     at org.apache.tapestry.test.PageTester.renderPage(PageTester.java:144)
>     at cn.crc.pjblog.test.pages.BlogPostOneTest.BlogPostOneTest1(
> BlogPostOneTest.java:16)
>     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:585)
>     at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java
> :604)
>     at org.testng.internal.Invoker.invokeMethod(Invoker.java:470)
>     at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:564)
>     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:830)
>     at org.testng.internal.TestMethodWorker.invokeTestMethods(
> TestMethodWorker.java:125)
>     at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
>     at org.testng.TestRunner.runWorkers(TestRunner.java:678)
>     at org.testng.TestRunner.privateRun(TestRunner.java:624)
>     at org.testng.TestRunner.run(TestRunner.java:495)
>     at org.testng.SuiteRunner.runTest(SuiteRunner.java:300)
>     at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:295)
>     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:275)
>     at org.testng.SuiteRunner.run(SuiteRunner.java:190)
>     at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:792)
>     at org.testng.TestNG.runSuitesLocally(TestNG.java:765)
>     at org.testng.TestNG.run(TestNG.java:699)
>     at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>     at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:122)
> Caused by: java.lang.RuntimeException: An exception occurred obtaining the
> Spring WebApplicationContext: getAttribute() is not supported for
> ContextForPageTester.
>     at cn.crc.spring.SpringModule.build(SpringModule.java:40)
>     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:585)
>     at
> org.apache.tapestry.ioc.internal.ServiceBuilderMethodInvoker.createObject(
> ServiceBuilderMethodInvoker.java:75)
>     ... 64 more
> Caused by: java.lang.UnsupportedOperationException: getAttribute() is not
> supported for ContextForPageTester.
>     at org.apache.tapestry.internal.test.PageTesterContext.getAttribute(
> PageTesterContext.java:61)
>     at $Context_1154558bccc.getAttribute($Context_1154558bccc.java)
>     at $Context_1154558bccb.getAttribute($Context_1154558bccb.java)
>     at cn.crc.spring.SpringModule.build(SpringModule.java:36)
>     ... 69 more
> FAILED: BlogPostOneTest1
> java.lang.RuntimeException: java.lang.ClassNotFoundException: caught an
> exception while obtaining a class file for cn.crc.pjblog.pages.BlogPostOne
>     at
>
> org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.findClass
> (ComponentInstantiatorSourceImpl.java:258)
>     at
>
> org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.findInstantiator
> (ComponentInstantiatorSourceImpl.java:240)
>     at
>
> $ComponentInstantiatorSource_1154558bcb3.findInstantiator($ComponentInstantiatorSource_1154558bcb3.java)
>     at
>
> org.apache.tapestry.internal.services.PageElementFactoryImpl.newRootComponentElement
> (PageElementFactoryImpl.java:319)
>     at
>
> $PageElementFactory_1154558bcbe.newRootComponentElement($PageElementFactory_1154558bcbe.java)
>     at
>
> org.apache.tapestry.internal.services.PageLoaderProcessor.loadRootComponent
> (
> PageLoaderProcessor.java:405)
>     at org.apache.tapestry.internal.services.PageLoaderProcessor.loadPage(
> PageLoaderProcessor.java:390)
>     at org.apache.tapestry.internal.services.PageLoaderImpl.loadPage(
> PageLoaderImpl.java:59)
>     at $PageLoader_1154558bcbb.loadPage($PageLoader_1154558bcbb.java)
>     at org.apache.tapestry.internal.services.PagePoolImpl.checkout(
> PagePoolImpl.java:70)
>     at $PagePool_1154558bcba.checkout($PagePool_1154558bcba.java)
>     at org.apache.tapestry.internal.services.RequestPageCacheImpl.get(
> RequestPageCacheImpl.java:44)
>     at
> $RequestPageCache_1154558bcb7.get($RequestPageCache_1154558bcb7.java)
>     at
> $RequestPageCache_1154558bcaf.get($RequestPageCache_1154558bcaf.java)
>     at
> org.apache.tapestry.internal.services.PageRenderRequestHandlerImpl.handle(
> PageRenderRequestHandlerImpl.java:55)
>     at
>
> $PageRenderRequestHandler_1154558bca5.handle($PageRenderRequestHandler_1154558bca5.java)
>     at org.apache.tapestry.internal.test.PageLinkInvoker.invoke(
> PageLinkInvoker.java:57)
>     at org.apache.tapestry.test.PageTester.invoke(PageTester.java:184)
>     at org.apache.tapestry.test.PageTester.renderPage(PageTester.java:144)
>     at cn.crc.pjblog.test.pages.BlogPostOneTest.BlogPostOneTest1(
> BlogPostOneTest.java:16)
> Caused by: java.lang.ClassNotFoundException: caught an exception while
> obtaining a class file for cn.crc.pjblog.pages.BlogPostOne
>     at javassist.Loader.findClass(Loader.java:359)
>     at
>
> org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl$PackageAwareLoader.findClass
> (ComponentInstantiatorSourceImpl.java:85)
>     at javassist.Loader.loadClass(Loader.java:311)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>     at
>
> org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.findClass
> (ComponentInstantiatorSourceImpl.java:254)
>     ... 41 more
> Caused by: org.apache.tapestry.internal.services.TransformationException:
> Error obtaining injected value for field
> cn.crc.pjblog.pages.BlogPostOne.pdao: Exception constructing service
> 'WebApplicationContext': Error invoking service builder method
> cn.crc.spring.SpringModule.build(Context) (at SpringModule.java:34) (for
> service 'WebApplicationContext'): An exception occurred obtaining the Spring
> WebApplicationContext: getAttribute() is not supported for
> ContextForPageTester.
>     at
>
> org.apache.tapestry.internal.services.ComponentClassTransformerImpl.transformComponentClass
> (ComponentClassTransformerImpl.java:137)
>     at
>
> $ComponentClassTransformer_1154558bcc0.transformComponentClass($ComponentClassTransformer_1154558bcc0.java)
>     at
>
> org.apache.tapestry.internal.services.ComponentInstantiatorSourceImpl.onLoad
> (ComponentInstantiatorSourceImpl.java:177)
>     at javassist.Loader.findClass(Loader.java:340)
>     ... 45 more
> Caused by: java.lang.RuntimeException: Error obtaining injected value for
> field cn.crc.pjblog.pages.BlogPostOne.pdao: Exception constructing service
> 'WebApplicationContext': Error invoking service builder method
> cn.crc.spring.SpringModule.build(Context) (at SpringModule.java:34) (for
> service 'WebApplicationContext'): An exception occurred obtaining the Spring
> WebApplicationContext: getAttribute() is not supported for
> ContextForPageTester.
>     at org.apache.tapestry.internal.services.InjectWorker.inject(
> InjectWorker.java:84)
>     at org.apache.tapestry.internal.services.InjectWorker.transform(
> InjectWorker.java:53)
>     at
>
> $ComponentClassTransformWorker_1154558bcc9.transform($ComponentClassTransformWorker_1154558bcc9.java)
>     at
>
> $ComponentClassTransformWorker_1154558bcc6.transform($ComponentClassTransformWorker_1154558bcc6.java)
>     at
>
> org.apache.tapestry.internal.services.ComponentClassTransformerImpl.transformComponentClass
> (ComponentClassTransformerImpl.java:131)
>     ... 48 more
> Caused by: java.lang.RuntimeException: Exception constructing service
> 'WebApplicationContext': Error invoking service builder method
> cn.crc.spring.SpringModule.build(Context) (at SpringModule.java:34) (for
> service 'WebApplicationContext'): An exception occurred obtaining the Spring
> WebApplicationContext: getAttribute() is not supported for
> ContextForPageTester.
>     at
>
> org.apache.tapestry.ioc.internal.services.JustInTimeObjectCreator.createObject
> (JustInTimeObjectCreator.java:69)
>     at
>
> $WebApplicationContext_1154558bc95._delegate($WebApplicationContext_1154558bc95.java)
>     at
>
> $WebApplicationContext_1154558bc95.getBeanDefinitionNames($WebApplicationContext_1154558bc95.java)
>     at cn.crc.spring.SpringObjectProvider.loadBeanNames(
> SpringObjectProvider.java:49)
>     at cn.crc.spring.SpringObjectProvider.provide(
> SpringObjectProvider.java
> :73)
>     at
> $ObjectProvider_1154558bc97.provide($ObjectProvider_1154558bc97.java)
>     at
> $ObjectProvider_1154558bc90.provide($ObjectProvider_1154558bc90.java)
>     at org.apache.tapestry.internal.services.InjectWorker.inject(
> InjectWorker.java:80)
>     ... 52 more
> Caused by: java.lang.RuntimeException: Error invoking service builder
> method
> cn.crc.spring.SpringModule.build(Context) (at SpringModule.java:34) (for
> service 'WebApplicationContext'): An exception occurred obtaining the Spring
> WebApplicationContext: getAttribute() is not supported for
> ContextForPageTester.
>     at
> org.apache.tapestry.ioc.internal.ServiceBuilderMethodInvoker.createObject(
> ServiceBuilderMethodInvoker.java:87)
>     at
> org.apache.tapestry.ioc.internal.SingletonServiceLifecycle.createService(
> SingletonServiceLifecycle.java:31)
>     at
>
> org.apache.tapestry.ioc.internal.LifecycleWrappedServiceCreator.createObject
> (LifecycleWrappedServiceCreator.java:54)
>     at
> org.apache.tapestry.ioc.internal.InterceptorStackBuilder.createObject
> (InterceptorStackBuilder.java:54)
>     at
>
> org.apache.tapestry.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject
> (RecursiveServiceCreationCheckWrapper.java:60)
>     at
>
> org.apache.tapestry.ioc.internal.services.JustInTimeObjectCreator.createObject
> (JustInTimeObjectCreator.java:61)
>     ... 59 more
> Caused by: java.lang.RuntimeException: An exception occurred obtaining the
> Spring WebApplicationContext: getAttribute() is not supported for
> ContextForPageTester.
>     at cn.crc.spring.SpringModule.build(SpringModule.java:40)
>     at
> org.apache.tapestry.ioc.internal.ServiceBuilderMethodInvoker.createObject(
> ServiceBuilderMethodInvoker.java:75)
>     ... 64 more
> Caused by: java.lang.UnsupportedOperationException: getAttribute() is not
> supported for ContextForPageTester.
>     at org.apache.tapestry.internal.test.PageTesterContext.getAttribute(
> PageTesterContext.java:61)
>     at $Context_1154558bccc.getAttribute($Context_1154558bccc.java)
>     at $Context_1154558bccb.getAttribute($Context_1154558bccb.java)
>     at cn.crc.spring.SpringModule.build(SpringModule.java:36)
>     ... 69 more
> ... Removed 26 stack frames
>
>
> 2007/9/26, Joel Wiegman <[EMAIL PROTECTED]>:
> >
> > What's basically happening here is:
> >
> > The application module you are passing to your PageTester (via the
> > "String appName" argument) does not load your Spring context.  In the
> > alternative Spring integration link you provided this string would be
> > "Spring", assuming the class is named "SpringModule" and that it
> > exists in your <app>.services package.
> >
> > Hope that helps.
> >
> > -----Original Message-----
> > From: Doublel [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, September 25, 2007 8:06 PM
> > To: Tapestry users
> > Subject: Re: Using PageTester with tapestry-spring
> >
> > My Application use spring2+tapestry5+hibernate3 ,it can work well in
> > me IE or  FF
> >
> > so,I want to use Unit Test with testNG .I followed
> > http://tapestry.apache.org/tapestry5/tapestry-core/guide/unit-testing-
> > pages.html
> >
> > configrate spring with
> > <http://wiki.apache.org/tapestry/Tapestry5SpringIntegration>
> > http://wiki.apache.org/tapestry/Tapestry5SpringIntegrationAlternative2
> > <http://wiki.apache.org/tapestry/Tapestry5SpringIntegration>
> >
> > I want to test a tapestry page, but I got Exception .IPublicDAO is my
> > spring class
> >
> > in my tapestry page i use inject
> >
> > @Inject
> >     @SpringBean("IPublicDAO")
> >     private IPublicDAO dao;
> >
> >
> >
> > I didnot know wrong where I make. can anybody help me  thanks a lot.
> >
> > Caused by: java.lang.RuntimeException: Error obtaining injected value
> > for field cn.crc.pjblog.pages.BlogPostOne.pdao: No service implements
> > the interface cn.crc.model.impl.IPublicDAO.
> > at org.apache.tapestry.internal.services.InjectWorker.inject (
> > InjectWorker.java:84)
> > at org.apache.tapestry.internal.services.InjectWorker.transform(
> > InjectWorker.java:53)
> > at
> >
> > $ComponentClassTransformWorker_114ba61b606.transform($ComponentClassTr
> > ansformWorker_114ba61b606.java)
> > at
> >
> > $ComponentClassTransformWorker_114ba61b603.transform($ComponentClassTr
> > ansformWorker_114ba61b603.java)
> > at
> >
> > org.apache.tapestry.internal.services.ComponentClassTransformerImpl.tr
> > ansformComponentClass (ComponentClassTransformerImpl.java :131) ... 48
> > more Caused by:
> > java.lang.RuntimeException: No service implements the interface
> > cn.crc.model.impl.IPublicDAO.
> > at org.apache.tapestry.ioc.internal.RegistryImpl.getService(
> > RegistryImpl.java:447)
> > at org.apache.tapestry.ioc.internal.ObjectLocatorImpl.getService(
> > ObjectLocatorImpl.java:45)
> > at org.apache.tapestry.ioc.services.TapestryIOCModule$2.provide(
> > TapestryIOCModule.java:132)
> > at
> > $ObjectProvider_114ba61b5d4.provide($ObjectProvider_114ba61b5d4.java)
> > at
> > $ObjectProvider_114ba61b5ce.provide($ObjectProvider_114ba61b5ce.java)
> > at org.apache.tapestry.internal.services.InjectWorker.inject(
> > InjectWorker.java:80)
> > ... 52 more
> > ... Removed 22 stack frames
> >
> >
> >
> >
> > 2007/9/25, Joel Wiegman <[EMAIL PROTECTED]>:
> > >
> > > Sure... what questions do you have?
> > >
> > > I'd rather not write 8 paragraphs and still not answer your
> questions...
> > >
> > > -----Original Message-----
> > > From: Doublel [mailto:[EMAIL PROTECTED]
> > > Sent: Monday, September 24, 2007 7:59 PM
> > > To: Tapestry users
> > > Subject: Re: Using PageTester with tapestry-spring
> > >
> > > I run into the same problem  I use
> > > http://wiki.apache.org/tapestry/Tapestry5SpringIntegrationAlternativ
> > > e2
> > > Can you explain more detail??
> > >
> > > 2007/9/24, Joel Wiegman <[EMAIL PROTECTED]>:
> > > >
> > > > Ivan,
> > > >
> > > > I'm using PageTester with Spring integration, but you'll have to
> > > > jump through a few small hoops to accomplish this.
> > > >
> > > > I've written a "TestHarnessModule" in my <app dir>.services
> directory.
> > > > This module contributes the Spring services manually.  My code
> > > > looks very similar to what's found here:
> > > >
> > > > http://wiki.apache.org/tapestry/Tapestry5SpringIntegrationAlternat
> > > > iv
> > > > e1
> > > >
> > > > Then, you can pass in the name of the module to your PageTester:
> > > >
> > > > PageTester pageTester= new PageTester("com.myapp.dir",
> > > > "TestHarness");
> > > >
> > > > IMHO, what's really neat about this is you can point your tests to
> > > > a different Spring configuration that uses mocked objects, mock
> > > > databases, etc.  This is what we're doing and it has worked very
> well.
> > > >
> > > > Hope this helps,
> > > >
> > > > Joel
> > > >
> > > > -----Original Message-----
> > > > From: Ivan Dubrov [mailto:[EMAIL PROTECTED]
> > > > Sent: Monday, September 24, 2007 7:14 AM
> > > > To: Tapestry users
> > > > Subject: Using PageTester with tapestry-spring
> > > >
> > > > Hi,
> > > >
> > > > How can I use the PageTester with the Spring integration? The
> > > > problem is that when PageTester creates the registry it does not
> > > > adds SpringModuleDef to the list of modules and all my Spring
> > > > services are unavailable because of this. Extending the PageTester
> > > > is not possible as well, so I cannot extend it and provide
> > > > additional module (like the TapestrySpringFilter does), so I have
> > > > to copy-paste the complete PageTester and add a line to include
> > SpringModuleDef module to the list.
> > > >
> > > > Are there any other ways that not include dumb copy-pasting?
> > > >
> > > > Just for clearness. How can I add an override to the services when
> > > > running the tests? Creating AliasContribution's with the mode set
> > > > to "test", right? But what to do if I want to keep my primary
> > > > module clear of test services and keep all my test services in the
> > > > test module inside the src/test Maven2 hierarchy (so they even
> > > > aren't included in the release build)?
> > > >
> > > > --
> > > > WBR,
> > > > Ivan S. Dubrov
> > > >
> > > >
> > > >
> > > > ------------------------------------------------------------------
> > > > --
> > > > - 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]
> > >
> > >
> >
> >
> > --
> > 得与失都是生活
> >
> > ---------------------------------------------------------------------
> > 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