package org.needle4j.junit.builder; import static org.needle4j.junit.NeedleBuilders.needleRule; import java.util.HashSet; import java.util.Set; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.needle4j.annotation.ObjectUnderTest; import org.needle4j.injection.InjectionProvider; import org.needle4j.injection.InjectionProviderInstancesSupplier; import org.needle4j.injection.InjectionProviders; import org.needle4j.junit.NeedleRule; public class NeedleRuleBuilderWithSupplierTest { private final Runnable runnable = new RunnableImpl(); @Rule public NeedleRule needleRule = needleRule().addAnnotation(TestBuilderQualifier.class) .addSupplier(new SupplierImpl()).build(); @ObjectUnderTest private ClassToTest objectUnderTest = new ClassToTest(); @Test public void testInjection() throws Exception { Assert.assertNotNull(objectUnderTest.runnable); Assert.assertSame(runnable, runnable); } class ClassToTest { @TestBuilderQualifier Runnable runnable; } class RunnableImpl implements Runnable { @Override public void run() { } } class SupplierImpl implements InjectionProviderInstancesSupplier { private Set<InjectionProvider<?>> provider = new HashSet<InjectionProvider<?>>(); public SupplierImpl() { provider.add(InjectionProviders.providerForQualifiedInstance(TestBuilderQualifier.class, runnable)); } @Override public Set<InjectionProvider<?>> get() { return provider; } } }