[
https://issues.jboss.org/browse/WELD-1125?page=com.atlassian.jira.plugin....
]
Manuel Hartl commented on WELD-1125:
------------------------------------
actually there is no special reason not using a static producer. at least in this
example.
but in general i think it should work.
in a normal production environment (no arquillian..) this works too - i mean defining
non-static producers in beans, that also inject the produced stuff. so why shouldn't
this work with arquillian?
-> i think the first thing to clearify is: Should this work - or not :) (i think it
should)
at least there should not be an StackOverflowError - as you stated.
StackOverflowError: It is not possible to define producers in an
arquillian unit test
-------------------------------------------------------------------------------------
Key: WELD-1125
URL:
https://issues.jboss.org/browse/WELD-1125
Project: Weld
Issue Type: Bug
Components: Bootstrap and Metamodel API
Affects Versions: 1.1.6.Final, 1.1.7.Final, 1.1.8.Final
Environment: windows7, junit, arquillian 1.0.0.Final
Reporter: Manuel Hartl
Assignee: Marko Lukša
Fix For: 1.1.5.Final
When i try to run the following unit test, it gives me a stackOverflowError with weld
1.1.6 and 1.1.7 - but it worked with 1.1.5!
the problem seems to be a recursive loop, while trying to initialize the unit test itself
for using its producer.
when you move the Producer to an static innerclass and add it to the shrinkwrap
definition, this test works.
package com.kobil.ssms.kernel.logic.licencing;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
*
* @author Manuel Hartl / FlexSecure GmbH
*
*/
@RunWith(Arquillian.class)
public class WeldInjectionStackOverflow {
@Deployment
public static JavaArchive createTestArchive() {
return ShrinkWrap.create(JavaArchive.class,
"test.jar").addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
public static interface Service {
public int dummy();
};
@Produces
Service getSevice() throws LicenceException {
return new Service() {
@Override
public int dummy() {
return 0;
}
};
}
@Inject
private Service service;
@Test
public void checkInjection() throws Exception {
Assert.assertEquals(0, service.dummy());
}
}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira