package org.wamblee.cdi;
+import static junit.framework.Assert.*;
+
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.InjectionTarget;
-import org.jboss.weld.environment.se.Weld;
-import org.jboss.weld.environment.se.WeldContainer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import static junit.framework.TestCase.*;
public class WeldTest {
-
- private Weld weld;
- private WeldContainer container;
- private BeanManager beanManager;
+
+ private BeanManagerSetup setup;
@Before
public void setUp() {
- weld = new Weld();
- container = weld.initialize();
- beanManager = container.getBeanManager();
+ setup = new BeanManagerSetup();
+ setup.initialize();
+ MySingleton.reset();
}
-
+
@After
- public void tearDown() {
- weld.shutdown();
+ public void tearDown() {
+ setup.shutdown();
}
-
+
@Test
- public void testGetSingleton() {
- AnnotatedType<MyPojo> type = beanManager.createAnnotatedType(MyPojo.class);
- InjectionTarget<MyPojo> target = beanManager.createInjectionTarget(type);
- CreationalContext<MyPojo> ctx = beanManager.createCreationalContext(null);
-
- MyPojo pojo = new MyPojo();
-
- target.inject(pojo, ctx);
-
- MySingleton obj = pojo.getSingleton();
-
+ public void testGetSingleton() {
+ AnnotatedType<MyPojo> type = setup.getBeanManager()
+ .createAnnotatedType(MyPojo.class);
+ InjectionTarget<MyPojo> target = setup.getBeanManager()
+ .createInjectionTarget(type);
+ CreationalContext<MyPojo> ctx = setup.getBeanManager()
+ .createCreationalContext(null);
+
+ MyPojo pojo = new MyPojo();
+
+ target.inject(pojo, ctx);
+
+ MySingleton obj = pojo.getSingleton();
+
assertNotNull(obj);
-
- MyPojo pojo2 = new MyPojo();
- target.inject(pojo2, ctx);
-
- // Objects will not be the same as they are contextual references to the same object.
+
+ MyPojo pojo2 = new MyPojo();
+ target.inject(pojo2, ctx);
+
+ // Objects will not be the same as they are contextual references to the
+ // same object.
// assertSame(pojo2, pojo);
assertEquals(1, MySingleton.getInstances());
}
+
+ @Test
+ public void testAgain() {
+ testGetSingleton();
+ }
}