package org.needle4j.injection.inheritance; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import javax.inject.Inject; import org.junit.Rule; import org.junit.Test; import org.needle4j.MyComponent; import org.needle4j.annotation.InjectIntoMany; import org.needle4j.annotation.ObjectUnderTest; import org.needle4j.junit.NeedleRule; public class InheritanceInjectionTest { @Rule public NeedleRule rule = new NeedleRule(); @ObjectUnderTest private DerivedComponent derivedComponent; @ObjectUnderTest @InjectIntoMany private GraphDependencyComponent dependencyComponent; @Inject private MyComponent component; @Test public void testFieldInjection_SameMockObject() { assertNotNull(derivedComponent); assertSame(derivedComponent.getComponentFromBaseByFieldInjection(), derivedComponent.getComponentByFieldInjection()); assertSame(component, derivedComponent.getComponentByFieldInjection()); } @Test public void testSetterInjection_SameMockObject() { assertNotNull(derivedComponent); assertNotNull(derivedComponent.getComponentFromBaseBySetter()); assertSame(derivedComponent.getComponentFromBaseBySetter(), derivedComponent.getComponentBySetter()); assertSame(component, derivedComponent.getComponentBySetter()); } @Test public void testGarphInjection() { MyComponent componentByFieldInjection = derivedComponent.getComponentByFieldInjection(); MyComponent component = dependencyComponent.getComponent(); assertSame(component, componentByFieldInjection); } }