package com.netflix.governator.guice.test.junit4; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.MethodSorters; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.netflix.archaius.api.Config; import com.netflix.archaius.guice.ArchaiusModule; import com.netflix.archaius.test.TestCompositeConfig; import com.netflix.archaius.test.TestPropertyOverride; import com.netflix.governator.guice.test.ModulesForTesting; @RunWith(GovernatorJunit4ClassRunner.class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) @ModulesForTesting({GovernatorJunit4ClassRunnerArchaius2IntegrationTestModule.class, ArchaiusModule.class}) @TestPropertyOverride("foo=bar") public class GovernatorJunit4ClassRunnerArchaius2IntegrationTest { @Inject Config config; @Inject @Named("foo") String earlyInitString; @Test public void testConfigWiring() { assertNotNull(config); assertTrue(config instanceof TestCompositeConfig); } @Test public void testClassLevelConfig() { assertEquals("bar", config.getString("foo")); assertEquals("bar", earlyInitString); } @Test @TestPropertyOverride("foo=baz") public void testMethodLevelConfigOverridesClassLevelConfig() { assertEquals("baz", config.getString("foo")); assertEquals("bar", earlyInitString); } @Test public void zz_testMethodLevelConfigClearedBetweenTests() { assertEquals("bar", config.getString("foo")); assertEquals("bar", earlyInitString); } } class GovernatorJunit4ClassRunnerArchaius2IntegrationTestModule extends AbstractModule { @Override protected void configure() { } @Provides @Singleton @Named("foo") public String earlyInitString(Config config) { return config.getString("foo"); } }