package com.netflix.governator; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import javax.annotation.Nullable; import javax.inject.Inject; import javax.inject.Singleton; import org.junit.Before; import org.junit.Test; import com.google.inject.AbstractModule; import com.google.inject.Injector; import com.google.inject.util.Providers; import com.netflix.governator.event.guava.GuavaApplicationEventModule; public class NullableBindingTest { private Injector injector; @Before public void setup() { injector = InjectorBuilder.fromModules(new GuavaApplicationEventModule(), new AbstractModule() { @Override protected void configure() { bind(InnerDependency.class).toProvider(Providers.<InnerDependency>of(null)); } }).createInjector(); } @Test public void test() { OuterDependency instance = injector.getInstance(OuterDependency.class); assertNotNull(instance); assertNull(instance.innerDependency); } private static class OuterDependency { InnerDependency innerDependency; @Inject public OuterDependency(@Nullable InnerDependency innerDependency) { this.innerDependency = innerDependency; } } @Singleton private static class InnerDependency { } }