tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: tomee testing
Date Sat, 23 Jun 2018 11:30:25 GMT
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
<matthew.broadhead@nbmlaw.co.uk.invalid> 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
> > <matthew.broadhead@nbmlaw.co.uk.invalid> 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
> >>> <matthew.broadhead@nbmlaw.co.uk.invalid> 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
> >>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> 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 users@tomee.apache.org
:
> >>>>>>      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
> >>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> 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
> >>>>>>>>> <matthew.broadhead@nbmlaw.co.uk.invalid> 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?
> >>>>>>>>>>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message