... or HtmlUnit & Jetty, see below from a recent thread on Maven users list:

subject Re: Fail a build if the web application fails to load in Jetty....
On Tue, Jan 4, 2011 at 11:10 AM, Nathan Wilhelmi <wilhe...@ucar.edu> wrote:
> Hi - HtmlUnit is a simpler solution for what we are trying to test right
> now. What I am really after is failing fast on the integration tests. If the
> app didn't start I would rather not run through each test and all setup
> associated with each one.
>
> -Nate
>
> Kalle Korhonen wrote:
>>
>> Why not
>> http://docs.codehaus.org/display/TYNAMO/2010/07/30/Full+web+integration+testing+in+a+single+JVM
>> and something like
>>
>> http://svn.codehaus.org/tynamo/trunk/tapestry-model/tapestry-model-test/src/main/java/org/tynamo/test/AbstractContainerTest.java
>> ?
>>
>> With an embedded Jetty, your integration tests would behave just like
>> your unit tests.
>>
>> Kalle
>>
>>
>> On Wed, Dec 29, 2010 at 1:03 PM, Nathan Wilhelmi <wilhe...@ucar.edu>
>> wrote:
>>
>>>
>>> Hi -
>>>
>>>  We are working on integrating Jetty deployment into our integration
>>> tests.
>>> We don't have any selenium type tests yet. Is there any to fail the build
>>> if
>>> the web application fails to start in Jetty? We would like to use this as
>>> first step.
>>>
>>> Thanks!
>>>

On Wed, Jan 5, 2011 at 9:44 AM, Howard Lewis Ship <hls...@gmail.com> wrote:
> ... and this is why you either want to look at unit testing using mocks, or
> at integration testing using Selenium.  In the half-ground you end up with a
> lot of complications since the code is designed to run inside a servlet
> container and you don't have one.
>
> PageTester exists to mock up the servlet container; that's another option.
>
> On Wed, Jan 5, 2011 at 8:08 AM, Donny Nadolny <donny.nado...@gmail.com>wrote:
>
>> You can contribute just the name of the file you want
>> ("quartz.properties"),
>> put it in the classpath, eg in src/main/resources, and then in the place
>> where you need to use it, load it from the classloader as a resource:
>> InputStream in = getClass().getResourceAsStream("quartz.properties");
>> But instead of "quartz.properties" you can use the symbol that contains
>> that
>> filename.
>>
>>
>> On Wed, Jan 5, 2011 at 10:06 AM, abangkis <abang...@gmail.com> wrote:
>>
>> > Hi josh, thanks a lot. I follow your advice and tries to include all the
>> > module that i could think of. This is the modified initRegistry method :
>> >
>> > private void initRegistry() {
>> >  RegistryBuilder builder = new RegistryBuilder();
>> >   builder.add(TapestryModule.class);
>> >  builder.add(AppModule.class);
>> >  builder.add(HibernateCoreModule.class);
>> >  builder.add(ChenilleKitQuartzModule.class);
>> > registry = builder.build();
>> > registry.performRegistryStartup();
>> >  }
>> >
>> > Adding TapestryModule fix the previous error, but i think I'm missing a
>> > little something here. The ChennileKitQuartzModule throw a null pointer
>> > exception
>> >
>> > Caused by: java.lang.RuntimeException: Error invoking service
>> contribution
>> > method
>> >
>> >
>> net.mreunion.cinematorserver.services.AppModule.contributeSchedulerFactory(ApplicationGlobals,
>> > OrderedConfiguration): java.lang.NullPointerException
>> >  at
>> >
>> >
>> org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:139)
>> > at
>> >
>> >
>> org.apache.tapestry5.ioc.internal.ContributionDefImpl.contribute(ContributionDefImpl.java:82)
>> >  at
>> >
>> org.apache.tapestry5.ioc.internal.RegistryImpl$9.run(RegistryImpl.java:651)
>> > 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)
>> >  ... 98 more
>> > Caused by: java.lang.NullPointerException
>> > at
>> >
>> >
>> net.mreunion.cinematorserver.services.AppModule.contributeSchedulerFactory(AppModule.java:116)
>> >
>> > That leads to the quartz contribution method in my app module
>> >
>> > public static void contributeSchedulerFactory(
>> > �...@injectservice("ApplicationGlobals") ApplicationGlobals
>> > applicationGlobals,
>> > OrderedConfiguration<URL> configuration) {
>> >  String fileName = applicationGlobals.getServletContext().getRealPath(
>> > "/WEB-INF/classes/quartz.properties");
>> >  File file = new File(fileName);
>> > if (!file.canRead())
>> > throw new RuntimeException(String.format("can't read file '%s'",
>> >  file.toURI()));
>> >
>> > try {
>> > configuration.add("configuration", file.toURI().toURL());
>> >  } catch (MalformedURLException e) {
>> > throw new RuntimeException(e);
>> > }
>> >  }
>> >
>> > public static void contributeQuartzSchedulerManager(
>> >  OrderedConfiguration<JobSchedulingBundle> configuration,
>> > CrawlingJobImpl crawlingJob, JakartaCrawler crawler) {
>> >  configuration.add("crawlScheduler", new
>> CrawlSchedulerBundle(crawlingJob,
>> > crawler));
>> > }
>> >
>> > The null pointer is in  the
>> >
>> > String fileName = applicationGlobals.getServletContext().getRealPath(
>> > "/WEB-INF/classes/quartz.properties");
>> >
>> > I guess it makes sense, since TestNG is not using Servlet Context to run
>> > the
>> > test.  Is there anyway to contribute the quartz.properties that will work
>> > inside and outside of the servlet context  ?
>> >
>> >
>> > Cheers,
>> > Abangkis
>> >
>> > On Wed, Jan 5, 2011 at 9:38 PM, Josh Canfield <joshcanfi...@gmail.com
>> > >wrote:
>> >
>> > > It doesn't look like you are including TapestryModule in your registry.
>> > > Since you're building the registry you're in charge kit adding all the
>> > > modules.
>> > >
>> > > Optionally you could add @SubModule(TapestryModule.class) to your
>> > AppModule
>> > > to make the dependency explicit.
>> > > On Jan 5, 2011 4:25 AM, "abangkis" <abang...@gmail.com> wrote:
>> > > > Hello, i have a tapestry app that consist of 1-2 pages, and lots of
>> > > > services. The apps is used to crawl another website. The apps uses
>> > > hibernate
>> > > > module, quartz and some other contribution. Because of the nature of
>> my
>> > > > apps, i want to test the services class using TestNG. I've created a
>> > > simple
>> > > > test that build the tapestry registry for my services and run it. But
>> i
>> > > > received an error that the ComponentRequestHandler doesn't exist.
>> > Here's
>> > > the
>> > > > contribution in the appmodule, test file and the stack trace. I
>> wonder
>> > > what
>> > > > I've missed ?
>> > > >
>> > > >
>> > > > Cheers,
>> > > > Abangkis
>> > > >
>> > > > public class AppModule {
>> > > > ....
>> > > >
>> > > > public void
>> > > >
>> > >
>> > >
>> >
>> contributeComponentRequestHandler(OrderedConfiguration<ComponentRequestFilter>
>> > > > configuration) {
>> > > > configuration.addInstance("PageProtectionFilter",
>> > > > PageProtectionFilter.class);
>> > > > }
>> > > > public void
>> > contributeRequestHandler(OrderedConfiguration<RequestFilter>
>> > > > configuration,
>> > > > PageRenderLinkSource pageRenderLinkSource) {
>> > > > final HashSet<String> ASSETS_WHITE_LIST = new
>> > > > HashSet<String>(Arrays.asList("jpg", "jpeg", "png", "gif", "js",
>> > > > "css", "ico", "html", "json"));
>> > > > configuration.add("AssetProtectionFilter", new
>> > > > AssetProtectionFilter(ASSETS_WHITE_LIST, pageRenderLinkSource),
>> > > > "before:*");
>> > > > }
>> > > > ....
>> > > > }
>> > > >
>> > > > public class MyTest {
>> > > > private Registry registry;
>> > > >
>> > > > @Test
>> > > > public void f() {
>> > > > String pageName = "DummyPage";
>> > > > MovieManager movieManager = registry.getService(MovieManager.class);
>> > > > String result = movieManager.getMovieTitle(pageName);
>> > > > assertEquals("Gullivers Island", result);
>> > > > }
>> > > >
>> > > > @BeforeClass
>> > > > public void beforeClass() {
>> > > > // registry = IOCUtilities.buildDefaultRegistry();
>> > > > initRegistry();
>> > > > }
>> > > >
>> > > > private void initRegistry() {
>> > > > RegistryBuilder builder = new RegistryBuilder();
>> > > > builder.add(ChenilleKitQuartzModule.class);
>> > > > builder.add(AppModule.class);
>> > > > registry = builder.build();
>> > > > registry.performRegistryStartup();
>> > > > }
>> > > >
>> > > > @AfterClass
>> > > > public void afterClass() {
>> > > > registry.shutdown();
>> > > > }
>> > > >
>> > > > }
>> > > >
>> > > > FAILED CONFIGURATION: @BeforeClass beforeClass
>> > > > java.lang.IllegalArgumentException: Contribution
>> > > >
>> > >
>> > >
>> >
>> net.mreunion.cinematorserver.services.AppModule.contributeComponentRequestHandler(OrderedConfiguration)
>> > > > (at AppModule.java:145) is for service 'ComponentRequestHandler',
>> which
>> > > does
>> > > > not exist.
>> > > > at
>> > > >
>> > >
>> > >
>> >
>> org.apache.tapestry5.ioc.internal.RegistryImpl.validateContributeDefs(RegistryImpl.java:253)
>> > > > at
>> > > >
>> > >
>> > >
>> >
>> org.apache.tapestry5.ioc.internal.RegistryImpl.<init>(RegistryImpl.java:229)
>> > > > at
>> > >
>> org.apache.tapestry5.ioc.RegistryBuilder.build(RegistryBuilder.java:170)
>> > > > at
>> > > > net.mreunion.cinematorserver.TestEscapedCharacter.initRegistry(MyTest
>> > > .java:45)
>> > > > at
>> > > > net.mreunion.cinematorserver.TestEscapedCharacter.beforeClass(MyTest
>> > > .java:33)
>> > > > 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.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:74)
>> > > > at
>> > > org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:525)
>> > > > at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:202)
>> > > > at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:130)
>> > > > at
>> > > >
>> > >
>> > >
>> >
>> org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:173)
>> > > > at
>> org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105)
>> > > > at org.testng.TestRunner.runWorkers(TestRunner.java:1125)
>> > > > at org.testng.TestRunner.privateRun(TestRunner.java:749)
>> > > > at org.testng.TestRunner.run(TestRunner.java:600)
>> > > > at org.testng.SuiteRunner.runTest(SuiteRunner.java:317)
>> > > > at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:312)
>> > > > at org.testng.SuiteRunner.privateRun(SuiteRunner.java:274)
>> > > > at org.testng.SuiteRunner.run(SuiteRunner.java:223)
>> > > > at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
>> > > > at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
>> > > > at org.testng.TestNG.runSuitesSequentially(TestNG.java:995)
>> > > > at org.testng.TestNG.runSuitesLocally(TestNG.java:920)
>> > > > at org.testng.TestNG.run(TestNG.java:856)
>> > > > at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:110)
>> > > > at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
>> > > > at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:174)
>> > > >
>> > > >
>> > > > --
>> > > > http://www.mreunion-labs.net/
>> > > > twitter : @mreunionlabs
>> > > > blog : mreunion.wordpress.com
>> > > > Follow our android survey at :
>> > > > http://www.mreunion-labs.net/downloads:dlapk/MySurvey.apk
>> > >
>> >
>> >
>> >
>> > --
>> > http://www.mreunion-labs.net/
>> > twitter : @mreunionlabs
>> > blog : mreunion.wordpress.com
>> > Follow our android survey at :
>> > http://www.mreunion-labs.net/downloads:dlapk/MySurvey.apk
>> >
>>
>
>
>
> --
> 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
>

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

Reply via email to