[weld-issues] [JBoss JIRA] (WELD-1125) StackOverflowError: It is not possible to define producers in an arquillian unit test

Ales Justin (JIRA) jira-events at lists.jboss.org
Thu May 3 17:18:18 EDT 2012


    [ https://issues.jboss.org/browse/WELD-1125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12690228#comment-12690228 ] 

Ales Justin commented on WELD-1125:
-----------------------------------

Imo, your use case is wrong.
StackOwf comes from WELD-911 fix.

The real bug is that we don't find this with Weld validation phase.
(although ARQ does some funky stuff, which might evade validation, not sure ...)


                
> 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

       



More information about the weld-issues mailing list