You can but you need to add all the object graph in the archive. Here you
miss an injection it seems (in your dao?).

Side note: operatesondeployment and naming your archive is not needed here.
It is useful when you deploy N > 1 archives.

Le sam. 23 juin 2018 12:54, Matthew Broadhead
<[email protected]> a écrit :

> i got the sample configuration from
> http://tomee.apache.org/developer/testing/arquillian/index.html under
> remote section.
>
> now my problem is that i can't inject the CDI bean
> SEVERE - CDI Beans module deployment failed
> org.apache.webbeans.exception.WebBeansDeploymentException:
> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> Qualifiers: [@javax.enterprise.inject.Default()]
> for injection into Field Injection Point, field name : quoteTypeDao,
> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> Name:null, API
> Types:[uk.me.kissy.sales.test.QuoteGeneratorArquillian,java.lang.Object],
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>      at
> org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:327)
>      at
>
> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
>
> i created the @Deployment using
> @Inject
>      private QuoteTypeDao quoteTypeDao;
>
>      @Deployment(name = "archive")
>      public static WebArchive war() {
>          return ShrinkWrap.create(WebArchive.class,
> "test.war").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
>                  .addClasses(QuoteTypeDao.class);
>      }
>
>      @Test
>      @OperateOnDeployment("archive")
>      public void test1() {
>          Quote quote = new Quote();
>          Promotion promotion = null;
>          List<QuoteType> quoteTypeList =
> quoteTypeDao.selectQuoteTypes(promotion, true);
>          System.out.println("Quote type list size: " +
> quoteTypeList.size());
>          for (QuoteType quoteType : quoteTypeList) {
>              System.out.println(quoteType.getName());
>              // quoteGeneratorDao.generateQuote(quote, promotion,
>              // quoteType.getQuoteTypeCategories(), quoteQuestions,
>              // quoteInit, true);
>              assertEquals(0, 1);
>          }
>          assertEquals(0, 1);
>      }
>
> can i not inject a CDI bean into the test using arquillian-tomee-remote?
>
> On 23/06/18 10:17, Romain Manni-Bucau wrote:
> > It is not needed at all bit it appears in your stack. If it is a copy
> paste
> > just drop it ;)
> >
> > Le sam. 23 juin 2018 10:05, Matthew Broadhead
> > <[email protected]> a écrit :
> >
> >> hi, i checked http://incubator.apache.org/projects/sirona.html but i
> >> couldn't find any documentation.  is sirona a requirement for
> >> arquillian-tomee-remote?  i.e. is it necessary to monitor tests? if so,
> >> then how do i exclude the mysql lib from the configuration?
> >> <!-- we monitor the test with sirona -->
> >> <property name="javaagent">
> >> mvn:org.apache.sirona:sirona-javaagent:0.2-incubating:jar:shaded
> >> </property>
> >>
> >> On 23/06/18 08:15, Romain Manni-Bucau wrote:
> >>> Exclude mysql from sirona instrumentation. Its bytecode is not safe.
> >>>
> >>> Le sam. 23 juin 2018 01:03, Matthew Broadhead
> >>> <[email protected]> a écrit :
> >>>
> >>>> thanks i added it using
> >>>> <property
> >>>> name="additionalLibs">mvn:mysql:mysql-connector-java:5.1.33</property>
> >>>>
> >>>> but i get these errors (which don't seem to stop execution)
> >>>>
> >>>> fail to transform
> class:com/mysql/jdbc/AbandonedConnectionCleanupThread,
> >>>> JSR/RET are not supported with computeFrames
> >>>> optionjava.lang.RuntimeException: JSR/RET are not supported with
> >>>> computeFrames option
> >>>>        at org.apache.sirona.asm.Frame.a(Unknown Source)
> >>>>        at org.apache.sirona.asm.MethodWriter.visitJumpInsn(Unknown
> >> Source)
> >>>> SEVERE - Can't create DataSource
> >>>> java.lang.LinkageError: loader (instance of java/net/URLClassLoader):
> >>>> attempted  duplicate class definition for name:
> >>>> "com/mysql/jdbc/ConnectionImpl"
> >>>>
> >>>> but this one is a stopper
> >>>>
> >>>> SEVERE - CDI Beans module deployment failed
> >>>> org.apache.webbeans.exception.WebBeansDeploymentException:
> >>>> javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> >>>> [uk.me.kissy.sales.dao.QuoteTypeDao] is not found with the qualifiers
> >>>> Qualifiers: [@javax.enterprise.inject.Default()]
> >>>> for injection into Field Injection Point, field name : quoteTypeDao,
> >>>> Bean Owner : [QuoteGeneratorArquillian, WebBeansType:ENTERPRISE,
> >>>> Name:null, API
> >>>> Types:[java.lang.Object,uk.me
> >> .kissy.sales.test.QuoteGeneratorArquillian],
> >>
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> >>>> i tried enabling remote support as i am trying remote not embedded
> >>>> tomee.remote.support = true
> >>>> # tomee.serialization.class.blacklist = *
> >>>> tomee.serialization.class.whitelist = *
> >>>>
> >>>> On 22/06/18 18:44, Romain Manni-Bucau wrote:
> >>>>> You can add it in libs property of arquillian container config. Just
> >>>> prefix
> >>>>> the coords with mvn:.
> >>>>>
> >>>>> Ex: mvn:mysql:mysql-connector-jav:version
> >>>>>
> >>>>> It is a multiline property so you can add N libs to tomee lib this
> way
> >>>>>
> >>>>> Le ven. 22 juin 2018 18:13, Matthew Broadhead
> >>>>> <[email protected]> a écrit :
> >>>>>
> >>>>>> INFO: Downloading org.apache.tomee:apache-tomee:7.0.3:zip:plus
> please
> >>>>>> wait...
> >>>>>>
> >>>>>> i have an arquillian test running up ok but it is complaining
> >>>>>> SEVERE - FATAL ERROR: Unknown error in Assembler.  Please send the
> >>>>>> following stack trace and this message to [email protected] :
> >>>>>>      org.apache.xbean.propertyeditor.PropertyEditorException:
> Unable to
> >>>>>> resolve class com.mysql.jdbc.Driver
> >>>>>>
> >>>>>> is there any way to directly bring in the mysql driver from maven
> >>>>>> central?  or do i need to download manually and put it into
> >>>>>> src/test/tomee/lib?
> >>>>>>
> >>>>>>
> >>>>>> On 22/06/18 10:03, Romain Manni-Bucau wrote:
> >>>>>>> You can theorically but I'd recommand you to write it in the final
> >>>> module
> >>>>>>> instead of trying to use the parent which will be executed before
> any
> >>>>>> other
> >>>>>>> modules.
> >>>>>>>
> >>>>>>> If A depends on B which depends on C then write your tests in A for
> >> the
> >>>>>>> complete app tests and write unit tests in B and C (potentially
> using
> >>>>>>> arquillian, appcomposer or even other solutions).
> >>>>>>>
> >>>>>>> For reference:
> >>>>>>> http://tomee.apache.org/developer/testing/arquillian/index.html
> and
> >>>>>>> http://tomee.apache.org/developer/testing/index.html
> >>>>>>>
> >>>>>>> Romain Manni-Bucau
> >>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>> https://github.com/rmannibucau> |
> >>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>> Le ven. 22 juin 2018 à 09:42, Matthew Broadhead
> >>>>>>> <[email protected]> a écrit :
> >>>>>>>
> >>>>>>>> it sounds like Arquillian might be the best fit in my case.  can
> the
> >>>>>>>> tests inject CDI beans from the webapps or does everything need to
> >> be
> >>>>>>>> done through http?  looking at
> >>>>>>>> https://tomee.apache.org/refcard/refcard.html "Simple Arquilian
> >> Test"
> >>>>>> it
> >>>>>>>> looks as if beans can be injected...
> >>>>>>>>
> >>>>>>>> is it possible to create the tests (or at least TomEE instance)
> in a
> >>>>>>>> parent pom?  i need to run several webapps at once which are all
> >>>> modules
> >>>>>>>> of the parent.  i think code is discouraged in parent project.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On 22/06/18 09:18, Romain Manni-Bucau wrote:
> >>>>>>>>> You can set the property openejb.location (or the other ones we
> >> have)
> >>>>>> to
> >>>>>>>>> point to an openejb.xml if you want. The advantage of the
> >> properties
> >>>> is
> >>>>>>>>> that it is filtered during the test and doesnt require a maven
> >> build
> >>>>>> but
> >>>>>>>> it
> >>>>>>>>> is up to you and depends the project setup.
> >>>>>>>>>
> >>>>>>>>> Arquillian is great to test complete application*s* in a real
> >> server,
> >>>>>>>>> ApplicationComposer is good to test small parts of applications
> or
> >>>>>>>>> frameworks, TomEE,
> >>>>>>>>> TomEEEmbeddedSingleRunner is great to test a real app (single
> >>>>>> deployment
> >>>>>>>>> from the classpath + single test setup) and will save a lot of
> >> time.
> >>>>>>>>> Romain Manni-Bucau
> >>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> >>>>>>>>> <https://rmannibucau.metawerx.net/> | Old Blog
> >>>>>>>>> <http://rmannibucau.wordpress.com> | Github <
> >>>>>>>> https://github.com/rmannibucau> |
> >>>>>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> >>>>>>>>> <
> >>
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>>>>>>>> Le ven. 22 juin 2018 à 09:03, Matthew Broadhead
> >>>>>>>>> <[email protected]> a écrit :
> >>>>>>>>>
> >>>>>>>>>> i am trying to use ApplicationComposer to create some tests.
> CDI
> >> is
> >>>>>>>>>> scanning the classes correctly but i am a little uncertain about
> >> how
> >>>>>> to
> >>>>>>>>>> load a test database.
> >>>>>>>>>>
> >>>>>>>>>> i was going to start by just loading the database as normal as
> it
> >>>> is a
> >>>>>>>>>> copy of production database.  but how do i specify the username
> >> and
> >>>>>>>>>> password or any other properties that are needed to connect to
> the
> >>>> db?
> >>>>>>>>>> @ContainerProperties(@ContainerProperties.Property(name =
> "mydb",
> >>>>>> value
> >>>>>>>>>> = "jdbc:mysql://localhost:3306/mydb"))
> >>>>>>>>>>
> >>>>>>>>>> is there a way to specify the resource in an xml file?
> >>>>>>>>>>
> >>>>>>>>>> another question...is it better to start with Arquillian or
> >>>>>>>>>> ApplicationComposer?
> >>>>>>>>>>
> >>
>
>

Reply via email to