Saturday 15 June 2013

java - Arquillian ApplicationDescriptor issues -



java - Arquillian ApplicationDescriptor issues -

i trying arquillian tests running on websphere 8.5 remote. injection not working: pom.xml

<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>org.arquillian.example</groupid> <artifactid>arquillian-tutorial</artifactid> <version>1.0-snapshot</version> <packaging>jar</packaging> <name>arquillian-tutorial</name> <url>http://maven.apache.org</url> <!-- properties --> <properties> <was_home>c:/usr_local2/ibm/websphere/appserver</was_home> <project.build.sourceencoding>utf-8</project.build.sourceencoding> </properties> <profiles> <profile> <id>build-server</id> <properties> <was_home>${was85_home}</was_home> </properties> </profile> </profiles> <dependencymanagement> <dependencies> <dependency> <groupid>org.jboss.arquillian</groupid> <artifactid>arquillian-bom</artifactid> <version>1.1.5.final</version> <scope>import</scope> <type>pom</type> </dependency> <dependency> <groupid>org.jboss.shrinkwrap.descriptors</groupid> <artifactid>shrinkwrap-descriptors-bom</artifactid> <version>2.0.0-alpha-6</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencymanagement> <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupid>org.jboss.arquillian.junit</groupid> <artifactid>arquillian-junit-container</artifactid> <scope>test</scope> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.8.1</version> <scope>test</scope> </dependency> <dependency> <groupid>org.jboss.arquillian.container</groupid> <artifactid>arquillian-was-remote-8.5</artifactid> <version>1.0.0.final-snapshot</version> </dependency> <dependency> <groupid>org.jboss.shrinkwrap.descriptors</groupid> <artifactid>shrinkwrap-descriptors-depchain</artifactid> <version>2.0.0-alpha-6</version> <type>pom</type> <scope>test</scope> </dependency> <dependency> <groupid>org.jboss.weld</groupid> <artifactid>weld-core</artifactid> <version>1.1.5.final</version> <scope>test</scope> </dependency> <dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-simple</artifactid> <version>1.6.4</version> <scope>test</scope> </dependency> <!-- com.ibm.websphere --> <dependency> <groupid>com.ibm.websphere</groupid> <artifactid>was-public</artifactid> <version>8.5.0</version> <scope>system</scope> <systempath>${was_home}/dev/was_public.jar</systempath> </dependency> <dependency> <groupid>com.ibm.websphere</groupid> <artifactid>ws-admin-client</artifactid> <version>8.5.0</version> <scope>system</scope> <systempath>${was_home}/runtimes/com.ibm.ws.admin.client_8.5.0.jar</systempath> </dependency> </dependencies> </project>

i have ejb:

package org.arquillian.example; import javax.inject.inject; import javax.inject.singleton; import java.io.printstream; /** * component creating personal greetings. */ @singleton public class greeter { private phrasebuilder phrasebuilder; @inject public greeter(phrasebuilder phrasebuilder) { this.phrasebuilder = phrasebuilder; } public void greet(printstream to, string name) { to.println(creategreeting(name)); } public string creategreeting(string name) { homecoming phrasebuilder.buildphrase("hello", name); } }

and have arquillian test:

bundle org.arquillian.example; import org.jboss.arquillian.container.test.api.deployment; import org.jboss.arquillian.junit.arquillian; import org.jboss.shrinkwrap.api.archive; import org.jboss.shrinkwrap.api.shrinkwrap; import org.jboss.shrinkwrap.api.asset.emptyasset; import org.jboss.shrinkwrap.api.asset.stringasset; import org.jboss.shrinkwrap.api.spec.webarchive; import org.junit.assert; import org.junit.test; import org.junit.runner.runwith; import javax.ejb.ejb; import javax.inject.inject; @runwith(arquillian.class) public class greetertest { @deployment public static archive<?> createdeployment() { webarchive war = shrinkwrap.create(webarchive.class).addclass(greeter.class).addclass(phrasebuilder.class) .addaswebinfresource(emptyasset.instance, "beans.xml"); system.out.println(war.tostring(true)); homecoming war; } @inject greeter greeter; @ejb greeter greeter2; @test public void shouldbeinjectedcdi() { assert.assertnotnull("cdi injection not working", greeter); } @test public void shouldbeinjectedejb() { assert.assertnotnull("ejb injection not working", greeter2); } @test public void should_create_greeting() { assert.assertequals("hello, earthling!", greeter.creategreeting("earthling")); greeter.greet(system.out, "earthling"); } }

but 1 time start tests failed.

java.lang.nullpointerexception @ org.arquillian.example.greetertest.should_create_greeting(greetertest.java:50) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:94) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:55) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:44) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:15) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:41) @ org.jboss.arquillian.junit.arquillian$6$1.invoke(arquillian.java:301) @ org.jboss.arquillian.container.test.impl.execution.localtestexecuter.execute(localtestexecuter.java:60) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:94) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:55) @ org.jboss.arquillian.core.impl.observerimpl.invoke(observerimpl.java:94) @ org.jboss.arquillian.core.impl.eventcontextimpl.invokeobservers(eventcontextimpl.java:99) @ org.jboss.arquillian.core.impl.eventcontextimpl.proceed(eventcontextimpl.java:81) @ org.jboss.arquillian.core.impl.managerimpl.fire(managerimpl.java:145) @ org.jboss.arquillian.core.impl.managerimpl.fire(managerimpl.java:116) @ org.jboss.arquillian.core.impl.eventimpl.fire(eventimpl.java:67) @ org.jboss.arquillian.container.test.impl.client.protocol.local.localcontainermethodexecutor.invoke(localcontainermethodexecutor.java:50) @ org.jboss.arquillian.container.test.impl.execution.remotetestexecuter.execute(remotetestexecuter.java:109) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:94) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:55) @ org.jboss.arquillian.core.impl.observerimpl.invoke(observerimpl.java:94) @ org.jboss.arquillian.core.impl.eventcontextimpl.invokeobservers(eventcontextimpl.java:99) @ org.jboss.arquillian.core.impl.eventcontextimpl.proceed(eventcontextimpl.java:81) @ org.jboss.arquillian.core.impl.managerimpl.fire(managerimpl.java:145) @ org.jboss.arquillian.core.impl.managerimpl.fire(managerimpl.java:116) @ org.jboss.arquillian.core.impl.eventimpl.fire(eventimpl.java:67) @ org.jboss.arquillian.container.test.impl.execution.clienttestexecuter.execute(clienttestexecuter.java:57) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:94) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:55) @ org.jboss.arquillian.core.impl.observerimpl.invoke(observerimpl.java:94) @ org.jboss.arquillian.core.impl.eventcontextimpl.invokeobservers(eventcontextimpl.java:99) @ org.jboss.arquillian.core.impl.eventcontextimpl.proceed(eventcontextimpl.java:81) @ org.jboss.arquillian.container.test.impl.client.containereventcontroller.createcontext(containereventcontroller.java:142) @ org.jboss.arquillian.container.test.impl.client.containereventcontroller.createtestcontext(containereventcontroller.java:129) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:94) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:55) @ org.jboss.arquillian.core.impl.observerimpl.invoke(observerimpl.java:94) @ org.jboss.arquillian.core.impl.eventcontextimpl.proceed(eventcontextimpl.java:88) @ org.jboss.arquillian.test.impl.testcontexthandler.createtestcontext(testcontexthandler.java:102) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:94) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:55) @ org.jboss.arquillian.core.impl.observerimpl.invoke(observerimpl.java:94) @ org.jboss.arquillian.core.impl.eventcontextimpl.proceed(eventcontextimpl.java:88) @ org.jboss.arquillian.test.impl.testcontexthandler.createclasscontext(testcontexthandler.java:84) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:94) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:55) @ org.jboss.arquillian.core.impl.observerimpl.invoke(observerimpl.java:94) @ org.jboss.arquillian.core.impl.eventcontextimpl.proceed(eventcontextimpl.java:88) @ org.jboss.arquillian.test.impl.testcontexthandler.createsuitecontext(testcontexthandler.java:65) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:94) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:55) @ org.jboss.arquillian.core.impl.observerimpl.invoke(observerimpl.java:94) @ org.jboss.arquillian.core.impl.eventcontextimpl.proceed(eventcontextimpl.java:88) @ org.jboss.arquillian.core.impl.managerimpl.fire(managerimpl.java:145) @ org.jboss.arquillian.test.impl.eventtestrunneradaptor.test(eventtestrunneradaptor.java:111) @ org.jboss.arquillian.junit.arquillian$6.evaluate(arquillian.java:294) @ org.jboss.arquillian.junit.arquillian$5.evaluate(arquillian.java:269) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:76) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:50) @ org.junit.runners.parentrunner$3.run(parentrunner.java:193) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:52) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:191) @ org.junit.runners.parentrunner.access$000(parentrunner.java:42) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:184) @ org.jboss.arquillian.junit.arquillian$2.evaluate(arquillian.java:193) @ org.jboss.arquillian.junit.arquillian.multiexecute(arquillian.java:345) @ org.jboss.arquillian.junit.arquillian.access$200(arquillian.java:49) @ org.jboss.arquillian.junit.arquillian$3.evaluate(arquillian.java:207) @ org.junit.runners.parentrunner.run(parentrunner.java:236) @ org.jboss.arquillian.junit.arquillian.run(arquillian.java:155) @ org.junit.runner.junitcore.run(junitcore.java:157) @ com.intellij.junit4.junit4ideatestrunner.startrunnerwithargs(junit4ideatestrunner.java:74) @ com.intellij.rt.execution.junit.junitstarter.preparestreamsandstart(junitstarter.java:211) @ com.intellij.rt.execution.junit.junitstarter.main(junitstarter.java:67) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:94) @ com.intellij.rt.execution.application.appmain.main(appmain.java:134)

i have tried many things. @applicationscoped, @sessionscoped on greeter class. help me out?

edit: here archive

2adbe911-ddef-42b5-bbfe-4d13fe620acd.war: /meta-inf/ /meta-inf/beans.xml /web-inf/ /web-inf/beans.xml /web-inf/classes/ /web-inf/classes/org/ /web-inf/classes/org/arquillian/ /web-inf/classes/org/arquillian/example/ /web-inf/classes/org/arquillian/example/greeter.class /web-inf/classes/org/arquillian/example/phrasebuilder.class

you need have beans.xml file enable cdi. web modules should in web-inf, ejb modules in meta-inf folder.

java websphere jboss-arquillian

No comments:

Post a Comment