Single @Deployment used across multiple TestNG test classes
magnus.smith Dec 2, 2010 12:44 PMHello, I'm pretty new to Arquillian and would be very appreciative of any advice that anyone might be able to offer with a problem that I'm encountering.
I'm using Arquillian (version 1.0.0.Alpha4) and testNG(version 5.14) to test EJBs with EclipseLink using Embedded Glassfish.
Everything works fine for me if I have just a single testcase class that has the @Deployment anntotation to create the archive and I do all my tests in that class.
What I would like to do is
- have a single testcase class in a group called 'setup' that does the ejb deployment and creates the db tables.
- have other testcase classes that are in groups that depend upon 'setup' group so that I can test each of the EJBs in turn with only doing the single deployment.
The problem that I am hitting is that arquillian seems to expect there to be a @Deployment annotation in each of the test classes.
The following stacktrace is generated when I run the first testcase that depends upon the 'setup' group
org.jboss.arquillian.impl.event.FiredEventException: java.lang.IllegalArgumentException: No method annotated with org.jboss.arquillian.api.Deployment found
at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:68)
at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
at org.jboss.arquillian.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:96)
at org.jboss.arquillian.testng.Arquillian.arquillianBeforeClass(Arquillian.java:77)
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.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:640)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:503)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:193)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:123)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:183)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:115)
at org.testng.TestRunner.runWorkers(TestRunner.java:1098)
at org.testng.TestRunner.privateRun(TestRunner.java:727)
at org.testng.TestRunner.run(TestRunner.java:581)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:315)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:310)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:272)
at org.testng.SuiteRunner.run(SuiteRunner.java:221)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:40)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:83)
at org.testng.internal.thread.ThreadUtil$CountDownLatchedRunnable.run(ThreadUtil.java:151)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: No method annotated with org.jboss.arquillian.api.Deployment found
at org.jboss.arquillian.impl.DeploymentAnnotationArchiveGenerator.generateApplicationArchive(DeploymentAnnotationArchiveGenerator.java:45)
at org.jboss.arquillian.impl.ClientDeploymentGenerator.generate(ClientDeploymentGenerator.java:59)
at org.jboss.arquillian.impl.handler.ArchiveGenerator.callback(ArchiveGenerator.java:52)
at org.jboss.arquillian.impl.handler.ArchiveGenerator.callback(ArchiveGenerator.java:42)
at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
... 26 more
Caused by: java.lang.IllegalArgumentException: No method annotated with org.jboss.arquillian.api.Deployment found
at org.jboss.arquillian.impl.DeploymentAnnotationArchiveGenerator.generateApplicationArchive(DeploymentAnnotationArchiveGenerator.java:45)
at org.jboss.arquillian.impl.ClientDeploymentGenerator.generate(ClientDeploymentGenerator.java:59)
at org.jboss.arquillian.impl.handler.ArchiveGenerator.callback(ArchiveGenerator.java:52)
at org.jboss.arquillian.impl.handler.ArchiveGenerator.callback(ArchiveGenerator.java:42)
at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
... 26 more
thanks