1 2 Previous Next 28 Replies Latest reply: Nov 6, 2010 10:34 AM by Ove Ranheim RSS

JSFUnit with Arquillian example

Bernard Labno Master

Where can we get example of JSFUnit run with Arquillian, but not only test class, but the entire project?

It would be great to have Seam, Maven, JSFUnit, Arquillian combo project sample.

  • 1. Re: JSFUnit with Arquillian example
    Stan Silvert Master

    Hi Bernard,

     

    I've got a simple example on my local machine.  It's a bit rough right now and it doesn't use Seam, but it does use Maven, JSFUnit, and Arquillian.  I can commit what I've got later today so you can go ahead and take a look.  I'll post again when it's ready.

     

    Stan

  • 2. Re: JSFUnit with Arquillian example
    Stan Silvert Master

    The example is uploaded.  Right now it is using "managed container" mode, so you will need to have an instance of JBoss AS6 M5 running.

     

    Then do "mvn test".

     

    The maven project is here: http://anonsvn.jboss.org/repos/jsfunit/trunk/jboss-jsfunit-examples/arquillian/

     

    Stan

  • 3. Re: JSFUnit with Arquillian example
    Bernard Labno Master

    Thanks Stan for rapid reply.

    Your example uses servlet-api 3.0. I'm using 2.5 and get

    IllegalArgumentException: The ServletProtocolDeploymentPackager can't merge web.xml files.

    Is it possible to use Arquillian with servlet-api 2.5 for WebArchive deployment?

    I would like to create WAR using Seam 2.2.0 or 2.2.1 (JSF 1.2) and deploy it on JBossAS 4.2.2.GA. Is it feasible?

  • 4. Re: JSFUnit with Arquillian example
    Stan Silvert Master

    Arquillian does support servlet 2.5, but it looks like it does not support JBoss AS 4.2.

     

    The list of supported containers is in the doc:

    http://docs.jboss.org/arquillian/reference/latest/en-US/html_single/

     

    Stan

  • 5. Re: JSFUnit with Arquillian example
    Bernard Labno Master

    Pity that JBossAS 4.2 is not supported. But let's say I will target JBossAS 5.1, then what's wrong with that exception? My web.xml is standard seam-gen created (servlet 2.5).

  • 6. Re: JSFUnit with Arquillian example
    Stan Silvert Master

    Did you change the dependencies to use the AS5 versions?

     

    Is there a "caused by" in the stack trace?  It would be interesting to know WHY it can't merge web.xml files.  I assume that Arquillian wants to put its servlet and filter definitions in your web.xml because it can't use web-fragment.xml with servlet 2.5.

     

    Also, you might want to try asking in the Arquillian forum.  I haven't tried anything besides AS6 so far.

     

    Stan

  • 7. Re: JSFUnit with Arquillian example
    John Ament Master

    I'm not sure why, but the example doesn't seem to want to work right now.  I'm trying to run it using an embedded AS 6 over maven 3

     

    mvn test -Pjbossas-embedded-6
    Warning: JAVA_HOME environment variable is not set.
    [INFO] Scanning for projects...
    Downloading: http://build.canoo.com/NekoHTML/artifacts/m2-repo/org/jboss/jbossas/jboss-as-depchain/6.0.0-SNAPSHOT/maven-metadata.xml
    Downloading: http://htmlunit.sourceforge.net/m2-repo-snapshots/org/jboss/jbossas/jboss-as-depchain/6.0.0-SNAPSHOT/maven-metadata.xml
    [WARNING] Checksum validation failed, expected <html><body><h1>/opt/NekoHTML/cruisecontrol/checkout/build/dist/m2-repo/org/jboss/jbossas/jboss-as-depchain/6.0.0-SNAPSHOT/maven-metadata.xml.sha1</h1><h1>Invalid but is 00a4040847746c099002bcf35cb4b89e79cb5097 for http://build.canoo.com/NekoHTML/artifacts/m2-repo/org/jboss/jbossas/jboss-as-depchain/6.0.0-SNAPSHOT/maven-metadata.xml
    [WARNING] Checksum validation failed, expected <html><body><h1>/opt/NekoHTML/cruisecontrol/checkout/build/dist/m2-repo/org/jboss/jbossas/jboss-as-depchain/6.0.0-SNAPSHOT/maven-metadata.xml.sha1</h1><h1>Invalid but is 00a4040847746c099002bcf35cb4b89e79cb5097 for http://build.canoo.com/NekoHTML/artifacts/m2-repo/org/jboss/jbossas/jboss-as-depchain/6.0.0-SNAPSHOT/maven-metadata.xml
    Downloaded: http://build.canoo.com/NekoHTML/artifacts/m2-repo/org/jboss/jbossas/jboss-as-depchain/6.0.0-SNAPSHOT/maven-metadata.xml (194 B at 0.2 KB/sec)
    [WARNING] Could not transfer metadata org.jboss.jbossas:jboss-as-depchain:6.0.0-SNAPSHOT/maven-metadata.xml from java.net (https://maven-repository.dev.java.net/nonav/repository): No connector available to access repository java.net (https://maven-repository.dev.java.net/nonav/repository) of type legacy using the available factories WagonRepositoryConnectorFactory
    [ERROR] The build could not read 1 project -> [Help 1]
    [ERROR]  
    [ERROR]   The project org.jboss.jsfunit:arquillian-example:1.3.0.Final (/src/testing/1.3.0.Final/jboss-jsfunit-examples/arquillian/pom.xml) has 4 errors
    [ERROR]     'modelVersion' is missing. @ [unknown-group-id]:[unknown-artifact-id]:[unknown-version]
    [ERROR]     'groupId' is missing. @ [unknown-group-id]:[unknown-artifact-id]:[unknown-version]
    [ERROR]     'artifactId' is missing. @ [unknown-group-id]:[unknown-artifact-id]:[unknown-version]
    [ERROR]     'version' is missing. @ [unknown-group-id]:[unknown-artifact-id]:[unknown-version]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingExcepti

  • 8. Re: JSFUnit with Arquillian example
    Moritz Winter Newbie

    Somebody was unreasonable about how maven works and tought a 301 (moved permanently) returned in HTML would make some great maven artifacts. This is how i changed the POM to build the example:

    1. Change the jboss-as-client to 6.0.0.M1
    2. Add new JBoss-Repository-Locations
    <repositories>
            <repository>
              <id>jboss-public-repository-group</id>
              <name>JBoss Public Maven Repository Group</name>
              <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
              <layout>default</layout>
              <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
              </releases>
              <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
              </snapshots>
            </repository>
          </repositories>

    Then I did a maven test -C -Dmaven.repo.local=~/testrepo maven test -C -Dmaven.repo.local=~/testrepo -P jbossas-embedded-6

     

    The C is for strictness with the Checksums (i.e. no HTML-Trash) and the Dmaven.repo.local is a path to a newly created maven repository because the old one has those bad files in it!

     

    Altough the build works now, the tests dont, surefire tells me:

     

     

    -------------------------------------------------------------------------------
    Test set: org.jboss.jsfunit.example.hellojsf.FacadeAPITest
    -------------------------------------------------------------------------------
    Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.096 sec <<< FAILURE!
    initializationError(org.jboss.jsfunit.example.hellojsf.FacadeAPITest)  Time elapsed: 0.01 sec  <<< ERROR!
    java.lang.NullPointerException
         at org.jboss.arquillian.impl.DeployableTestBuilder.build(DeployableTestBuilder.java:88)
         at org.jboss.arquillian.impl.DeployableTestBuilder.build(DeployableTestBuilder.java:77)
         at org.jboss.arquillian.junit.Arquillian.(Arquillian.java:85)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
         at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
         at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
         at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
         at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
         at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
         at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
         at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
         at org.apache.maven.surefire.junit4.JUnit4TestSet.(JUnit4TestSet.java:45)
         at org.apache.maven.surefire.junit4.JUnit4DirectoryTestSuite.createTestSet(JUnit4DirectoryTestSuite.java:56)
         at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.locateTestSets(AbstractDirectoryTestSuite.java:96)
         at org.apache.maven.surefire.Surefire.createSuiteFromDefinition(Surefire.java:209)
         at org.apache.maven.surefire.Surefire.run(Surefire.java:156)
         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.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
         at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)

     

    Any suggestions on this error?

     

    Added the embedded profile!

  • 9. Re: JSFUnit with Arquillian example
    John Ament Master

    yep, same here now as well.  looks like an arquillian error, but just guessing.    

  • 10. Re: JSFUnit with Arquillian example
    Moritz Winter Newbie

    Very cryptic configuration-error exception (see https://jira.jboss.org/browse/ARQ-164

     

     

    java.lang.NullPointerException
         at org.jboss.arquillian.impl.DeployableTestBuilder.build(DeployableTestBuilder.java:88)

     

    Translates to: Please execute me with a maven profile...

    maven test -C -Dmaven.repo.local=~/testrepo -P jbossas-embedded-6

     

    Maven can't download the bom-requirements atm from jboss, so download:

    https://repository.jboss.org/nexus/content/groups/public/org/jboss/ejb3/bom/bom-as6/0.2.0-alpha-10/bom-as6-0.2.0-alpha-10.pom

    https://repository.jboss.org/nexus/content/groups/public/org/jboss/spec/jboss-javaee6-specs-bom/1.0.0.Beta5/jboss-javaee6-specs-bom-1.0.0.Beta5.pom

     

    And:

    mvn install:install-file -Dfile=bom-as6-0.2.0-alpha-10.pom -DgroupId=org.jboss.ejb3.bom -DartifactId=bom-as6 -Dversion=0.2.0-alpha-10 -Dpackaging=pom

    mvn install:install-file -Dfile=jboss-javaee6-specs-bom-1.0.0.Beta5.pom -DgroupId=org.jboss.spec -DartifactId=jboss-javaee6-specs-bom -Dversion=1.0.0.Beta5 -Dpackaging=pom

     

    This leads to yet another error, four other depenecies are missing, among them:

    jboss.messaging:jboss-messaging:jar:${version.jboss.messaging} e.g. theres a unset maven-property somewhere, so thats it atm... iam to to continue today...

     

    P.S. if youre trying to use the jbossas-managed-6 profile, you're running in the next "error message" (https://jira.jboss.org/browse/ARQ-168) telling you to set the jboss-home

  • 11. Re: JSFUnit with Arquillian example
    John Ament Master

    In my case, I'm trying to run the embedded AS 6 implementation.  I have actually been specifying a profile, and I think if you don't specify one in the case of this build, nothing should be happening, I don't see any indication that a default profile exists.  With that said, I tried stripping out pieces that I believed to be faulty and reran it using the embedded profile - no dice.  I'll keep digging in it to see what's happening.

  • 12. Re: JSFUnit with Arquillian example
    John Ament Master

    So, I made some headway this evening (thanks Aslak) and resolved a number of issues w/ the dependency chain.  I still cannot get it to run w/ jboss as 6 embedded, but that's likely not my issue.  I was able to get 2 out of 3 tests to pass in the test case with the pom.xml located at http://pastebin.com/QwggD7aq but I had to also remove the jndi.properties.

     

    Edit:

     

    So after playing with it a bit more, I changed the third test case to this and it worked... weird.

     

     

    @Test
       public void testSetParamAndSubmit() throws IOException
       {
          WebClientSpec wcSpec = new WebClientSpec("/index.faces", BrowserVersion.INTERNET_EXPLORER_7);
          JSFSession jsfSession = new JSFSession(wcSpec);
          JSFClientSession client = jsfSession.getJSFClientSession();
          JSFServerSession server = jsfSession.getJSFServerSession();

     

          client.setValue("input_foo_text", "Stan");
          client.click("submit_button");

     

          UIComponent greeting = server.findComponent("greeting");
          Assert.assertTrue(greeting.isRendered());
       }

  • 13. Re: JSFUnit with Arquillian example
    Moritz Winter Newbie

    Thats actually extremly helpful, i got it running now!

    I  used your pom, added the compiler plugin and configured source/target to java 1.6. I removed the jndi.properties and sucessfully run junit tests in eclipse. Strange thing is i didn't had to change testcase #3 its working out of the box on my linux machine!

    My only concern is that i can't run "mvn test" it says that zero tests did pass and doesnt generate any surefire-reports (which should contain the error-messages) did this work for you?

     

    Thank you alot!

  • 14. Re: JSFUnit with Arquillian example
    John Ament Master

    I'm still not sure why, but in some cases on my system the third test case fails I end up with a view expired exception on execution of the button click.  I wouldn't be surprised if it was my machine.  I've uploaded my code base to github if anyone's interested in seeing the differences.  https://github.com/johnament/jsfunit-arquillian-example

     

    I am able to run mvn test and it does work.    

1 2 Previous Next