SeamTest with TestNG, embeddable jboss
jbeaken Oct 3, 2007 10:31 AMHi
I'm using seam1.2.1, jboss 4.2.1. I have managed to boot the embedded EJB3 container for testing purposes, but on trying to obtain a reference to a component, it fails on the @Create method. Anybody got any ideas? Please find relevant code below:
Test class
package com.ricall.test; import java.util.StringTokenizer; import javax.naming.InitialContext; import org.testng.annotations.Configuration; import org.testng.annotations.Test; import org.jboss.ejb3.embedded.*; import org.jboss.seam.core.Conversation; import org.jboss.seam.mock.SeamTest; import com.ricall.domain.company.Company; import com.ricall.services.user.AddUserService; public class CreateUserTest extends SeamTest { private String firstName = "Jack"; private String lastName = "Beaken"; private String password = "welcome"; private String emailAddress = "jack.beaken@ricall.com"; private Company company = new Company(); @Test(groups="user") @Configuration(groups="user") public void testAddUser() throws Exception { try { new FacesRequest() { protected void updateModelValues() throws Exception { setValue("#{userToAdd.firstName}", firstName); setValue("#{userToAdd.lastName}", lastName); setValue("#{userToAdd.password}", password); setValue("#{userToAdd.emailAddress}", emailAddress); company.setId(1l); setValue("#{userToAdd.company}", company); } protected void invokeApplication() { AddUserService addUserService = (AddUserService) getInstance("addUserService"); System.err.println("Add user service = " + addUserService); // invokeMethod("#{addUserService.add}"); addUserService.add(); } protected void renderResponse() { assert getValue("#{userToAdd.firstName}").equals(firstName); assert getValue("#{userToAdd.lastName}").equals(lastName); assert getValue("#{userToAdd.password}").equals(password); assert getValue("#{userToAdd.emailAddress}").equals(emailAddress); } }.run(); }catch(Exception e) { System.err.println(e.getMessage()); e.printStackTrace(); } } //Added to initalise SeamTest, will be moved to separate class later @Configuration(groups = "user", beforeTestMethod=true) public void begin() { System.err.println("In begin"); super.begin(); } @Configuration(groups = "user", afterTestMethod=true) public void end() { System.err.println("In end"); super.end(); } @Configuration(groups = "user", beforeTestClass=true) public void init() throws Exception { System.err.println("In init"); super.init(); } @Configuration(groups = "user", afterTestClass=true) public void cleanup() throws Exception { System.err.println("In cleanup"); super.cleanup(); } }
Exception:
[testng] exception invoking: create [testng] java.lang.RuntimeException: exception invoking: create [testng] at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:133) [testng] at org.jboss.seam.Component.callComponentMethod(Component.java:1834) [testng] at org.jboss.seam.Component.callCreateMethod(Component.java:1757) [testng] at org.jboss.seam.Component.newInstance(Component.java:1746) [testng] at org.jboss.seam.Component.getInstance(Component.java:1643) [testng] at org.jboss.seam.Component.getInstance(Component.java:1610) [testng] at org.jboss.seam.Component.getInstance(Component.java:1604) [testng] at org.jboss.seam.mock.SeamTest.getInstance(SeamTest.java:118) [testng] at com.ricall.test.CreateUserTest.access$5(CreateUserTest.java:1) [testng] at com.ricall.test.CreateUserTest$1.invokeApplication(CreateUserTest.java:41) [testng] at org.jboss.seam.mock.SeamTest$Request.run(SeamTest.java:489) [testng] at org.jboss.seam.mock.SeamTest$FacesRequest.run(SeamTest.java:632) [testng] at com.ricall.test.CreateUserTest.testAddUser(CreateUserTest.java:54) [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [testng] at java.lang.reflect.Method.invoke(Method.java:597) [testng] at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:529) [testng] at org.testng.internal.Invoker.invokeMethod(Invoker.java:398) [testng] at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:625) [testng] at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:88) [testng] at org.testng.TestRunner.privateRun(TestRunner.java:614) [testng] at org.testng.TestRunner.run(TestRunner.java:505) [testng] at org.testng.SuiteRunner.privateRun(SuiteRunner.java:221) [testng] at org.testng.SuiteRunner.run(SuiteRunner.java:147) [testng] at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:576) [testng] at org.testng.TestNG.runSuitesLocally(TestNG.java:539) [testng] at org.testng.TestNG.run(TestNG.java:316) [testng] at org.testng.TestNG.privateMain(TestNG.java:666) [testng] at org.testng.TestNG.main(TestNG.java:608) [testng] Caused by: java.lang.reflect.InvocationTargetException [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [testng] at java.lang.reflect.Method.invoke(Method.java:597) [testng] at org.jboss.seam.util.Reflections.invoke(Reflections.java:20) [testng] at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31) [testng] at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:72) [testng] at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:57) [testng] at org.jboss.seam.interceptors.RemoveInterceptor.aroundInvoke(RemoveInterceptor.java:40) [testng] at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69) [testng] at org.jboss.seam.interceptors.SynchronizationInterceptor.aroundInvoke(SynchronizationInterceptor.java:31) [testng] at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69) [testng] at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103) [testng] at org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInterceptor.java:50) [testng] at org.javassist.tmp.java.lang.Object_$$_javassist_0.create(Object_$$_javassist_0.java) [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [testng] at java.lang.reflect.Method.invoke(Method.java:597) [testng] at org.jboss.seam.util.Reflections.invoke(Reflections.java:20) [testng] at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:123) [testng] ... 29 more [testng] Caused by: java.lang.NoSuchMethodError: org.jboss.aop.MethodInfo.getUnadvisedMethod()Ljava/lang/reflect/Method; [testng] at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:181) [testng] at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98) [testng] at $Proxy117.create(Unknown Source) [testng] ... 50 more
So root cause:
Caused by: java.lang.NoSuchMethodError: org.jboss.aop.MethodInfo.getUnadvisedMethod()Lja
va/lang/reflect/Method;
thanks in advance