tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthew Broadhead <matthew.broadh...@nbmlaw.co.uk.INVALID>
Subject Re: tomee testing
Date Sat, 23 Jun 2018 10:54:49 GMT
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
View raw message