You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by membersound <me...@web.de> on 2012/11/05 12:31:56 UTC

Testing of classes with injected resources?

Hi,

how can I JUnit test a class within a Tapestry application? I mean: a class
where I make eg use of tapestry service bindings and @Inject my own services
there.
In the docs I just found how to test components and pages, but I want to
directly test against my business classes...

Thanks



--
View this message in context: http://tapestry.1045711.n5.nabble.com/Testing-of-classes-with-injected-resources-tp5717648.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Testing of classes with injected resources?

Posted by Thiago H de Paula Figueiredo <th...@gmail.com>.
On Tue, 06 Nov 2012 14:00:41 -0200, Taha Siddiqi
<ta...@gmail.com> wrote:

> Try adding TapetryModule.class, TapestryIOCModule.class to the  
> registryBuilder using registryBuilder.add(..). (Although I think  
> IOCUtilities.addDefaultModules() does that.)

Actually, that method doesn't that. From its JavaDoc:

Scans the classpath for JAR Manifests that contain the  
Tapestry-Module-Classes attribute and adds each corresponding class to the  
RegistryBuilder. In addition, looks for a system property named  
"tapestry.modules" and adds all of those modules as well. The  
tapestry.modules approach is intended for development.

-- 
Thiago H. de Paula Figueiredo

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Testing of classes with injected resources?

Posted by Howard Lewis Ship <hl...@gmail.com>.
When I test my component and service classes, that is UNIT test them, I use
mocks; since I'm generally using Groovy and Spock, it is easy to inject
even into a private field.

Later, I do integration testing, where I bring up the application as
closely as possible to how it works in production (but targeting a
different database, etc.). That not only acts like a sanity check, and a
chance to test the behavior in the browser, but also tests all the wiring
of services inside modules, and injections into pages and components ...
that is, the interactions between the lowest level structures.

Tapestry's PageTester provides an interrum level, running the application
inside a simulated servlet container.


On Tue, Nov 6, 2012 at 8:32 AM, Thiago H de Paula Figueiredo <
thiagohp@gmail.com> wrote:

> On Tue, 06 Nov 2012 14:00:41 -0200, Taha Siddiqi <ta...@gmail.com>
> wrote:
>
>  Try adding TapetryModule.class, TapestryIOCModule.class to the
>> registryBuilder using registryBuilder.add(..). (Although I think
>> IOCUtilities.**addDefaultModules() does that.)
>>
>
> I forgot to mention that TapestryFilter is the one who does that.
>
>
> --
> Thiago H. de Paula Figueiredo
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

Re: Testing of classes with injected resources?

Posted by Thiago H de Paula Figueiredo <th...@gmail.com>.
On Tue, 06 Nov 2012 14:00:41 -0200, Taha Siddiqi  
<ta...@gmail.com> wrote:

> Try adding TapetryModule.class, TapestryIOCModule.class to the  
> registryBuilder using registryBuilder.add(..). (Although I think  
> IOCUtilities.addDefaultModules() does that.)

I forgot to mention that TapestryFilter is the one who does that.

-- 
Thiago H. de Paula Figueiredo

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Testing of classes with injected resources?

Posted by Taha Siddiqi <ta...@gmail.com>.
Try adding TapetryModule.class, TapestryIOCModule.class to the registryBuilder using registryBuilder.add(..). (Although I think IOCUtilities.addDefaultModules() does that.)

On Nov 6, 2012, at 8:25 PM, membersound wrote:

> Taha Hafeez wrote
>> 	registry = builder.build();
> 
> 
> Gives exception:
> java.lang.IllegalArgumentException: Contribution
> AppModule.contributeRequestHandler(OrderedConfiguration, RequestFilter) (at
> AppModule.java:172) is for service 'RequestHandler', which does not exist.
> 	at
> org.apache.tapestry5.ioc.internal.RegistryImpl.validateContributeDefs(RegistryImpl.java:241)
> 	at
> org.apache.tapestry5.ioc.internal.RegistryImpl.<init>(RegistryImpl.java:205)
> 	at org.apache.tapestry5.ioc.RegistryBuilder.build(RegistryBuilder.java:177)
> 	at MyIT.setup(MyIT.java:58)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
> 	at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
> 	at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
> 	at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
> 	at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
> 	at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
> 	at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> 	at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> 	at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> 	at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> 	at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> 
> 
> 
> 
> 
> --
> View this message in context: http://tapestry.1045711.n5.nabble.com/Testing-of-classes-with-injected-resources-tp5717648p5717711.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Testing of classes with injected resources?

Posted by membersound <me...@web.de>.
Taha Hafeez wrote
>  	registry = builder.build();


Gives exception:
java.lang.IllegalArgumentException: Contribution
AppModule.contributeRequestHandler(OrderedConfiguration, RequestFilter) (at
AppModule.java:172) is for service 'RequestHandler', which does not exist.
	at
org.apache.tapestry5.ioc.internal.RegistryImpl.validateContributeDefs(RegistryImpl.java:241)
	at
org.apache.tapestry5.ioc.internal.RegistryImpl.<init>(RegistryImpl.java:205)
	at org.apache.tapestry5.ioc.RegistryBuilder.build(RegistryBuilder.java:177)
	at MyIT.setup(MyIT.java:58)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
	at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)





--
View this message in context: http://tapestry.1045711.n5.nabble.com/Testing-of-classes-with-injected-resources-tp5717648p5717711.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Testing of classes with injected resources?

Posted by Taha Siddiqi <ta...@gmail.com>.
Hi

You can create your registry and then access the registered services.

Registry registry;

public void setup(){

	RegistryBuilder builder = new RegistryBuilder();
	builder.add(AppModule.class);
	IOCUtilities.addDefaultModules(builder);
 	registry = builder.build();
	registry.performRegistryStartup();

}



public void tearDown(){
	if(registry != null){
		registry.shutdown();
	}
}


Between these, you can use registry.getService(MyService.class) to get your services.



regards
Taha




On Nov 5, 2012, at 5:01 PM, membersound wrote:

> Hi,
> 
> how can I JUnit test a class within a Tapestry application? I mean: a class
> where I make eg use of tapestry service bindings and @Inject my own services
> there.
> In the docs I just found how to test components and pages, but I want to
> directly test against my business classes...
> 
> Thanks
> 
> 
> 
> --
> View this message in context: http://tapestry.1045711.n5.nabble.com/Testing-of-classes-with-injected-resources-tp5717648.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org