[ 
https://issues.apache.org/jira/browse/DELTASPIKE-821?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14283062#comment-14283062
 ] 

Mario-Leander Reimer edited comment on DELTASPIKE-821 at 1/19/15 9:56 PM:
--------------------------------------------------------------------------

Hi John,

thanks for this tip. The problem definitely seems to be a classpath issue when 
running the tests with Gradle. I tried changing the output folder for the 
resources directory, so that the beans.xml file ends up in the same folder as 
the .class files. 
{code}
sourceSets {
    test {
        output.resourcesDir = 'build/classes/test'
    }
    main {
        output.resourcesDir = 'build/classes/main'
    }
}
{code}
Good news: this works for OpenWebBeans. Depending on which META-INF/beans.xml 
you want to use (main or test) changing the resourcesDir for either sourceSet 
is enough.

Unfortunately, with Weld I still get the following exception:
{code}
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001408: Unsatisfied 
dependencies for type Logger with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private 
de.qaware.commons.logging.LoggerProducerTest.logger
{code}


was (Author: mario-leander.reimer):
Hi John,

thanks for this tip. The problem definitely seems to be a classpath issue when 
running the tests with Gradle. I tried the changing the output folder for the 
resources directory, so that the beans.xml file ends up in the same folder as 
the .class files. 
{code}
sourceSets {
    test {
        output.resourcesDir = 'build/classes/test'
    }
    main {
        output.resourcesDir = 'build/classes/main'
    }
}
{code}
Good news: this works for OpenWebBeans. Depending on which META-INF/beans.xml 
you want to use (main or test) changing the resourcesDir for either sourceSet 
is enough.

Unfortunately, with Weld I still get the following exception:
{code}
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001408: Unsatisfied 
dependencies for type Logger with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private 
de.qaware.commons.logging.LoggerProducerTest.logger
{code}

> check compatibility with gradle
> -------------------------------
>
>                 Key: DELTASPIKE-821
>                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-821
>             Project: DeltaSpike
>          Issue Type: Task
>          Components: TestControl
>    Affects Versions: 1.2.1
>            Reporter: Mario-Leander Reimer
>             Fix For: 1.2.2
>
>         Attachments: cdi-logging.zip
>
>
> When using the DeltaSpike Test-Control module I noticed that unit tests that 
> run perfectly fine with Maven won't run with Gradle at all.
> Let's say you have the following producer method to create a SLF4J Logger 
> instance:
> {code:title=LoggerProducer.java}
> public class LoggerProducer {
>     @Produces
>     @Default
>     public Logger createLogger(final InjectionPoint ip) {
>         Class declaringClass = ip.getMember().getDeclaringClass();
>         return org.slf4j.LoggerFactory.getLogger(declaringClass);
>     }
> }
> {code}
> The test for this is also pretty simple:
> {code:title=LoggerProducerTest.java}
> @RunWith(CdiTestRunner.class)
> public class LoggerProducerTest {
>     @Inject 
>     private Logger logger;
>     @Test
>     public void testCreateLogger() throws Exception {
>         assertThat(logger, is(notNullValue()));
>     }
> }
> {code}
> Weld as well as OpenWebBeans throw an exception when the unit test is 
> executed by Gradle, because no suitable beans seem to be found for injection. 
> I have attached a running demo project so you can see for yourself.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to