package org.springframework.issues; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import org.junit.Test; import org.springframework.context.support.GenericXmlApplicationContext; /** * Unit test that reproduces an issue reported against SPR JIRA. @Test methods within * need not pass with the green bar! Rather they should fail in such a way that * demonstrates the reported issue. */ public class ReproTests { @Test public void singleConstructorNoCharlieNoDelta() { Alpha alpha = createAndRefreshApplicationContext("one-constructor"); assertNotNull(alpha.getBravo()); } @Test public void singleConstructorJustCharlie() { Alpha alpha = createAndRefreshApplicationContext("one-constructor", "charlie"); assertJustCharlie(alpha); } @Test public void singleConstructorJustDelta() { Alpha alpha = createAndRefreshApplicationContext("one-constructor", "delta"); assertJustDelta(alpha); } @Test public void singleConstructorCharlieAndDelta() { Alpha alpha = createAndRefreshApplicationContext("one-constructor", "charlie", "delta"); assertCharlieAndDelta(alpha); } @Test public void twoConstructorsNoCharlieNoDelta() { Alpha alpha = createAndRefreshApplicationContext("two-constructors"); assertNotNull(alpha.getBravo()); } @Test public void twoConstructorsJustCharlie() { Alpha alpha = createAndRefreshApplicationContext("two-constructors", "charlie"); assertJustCharlie(alpha); } @Test public void twoConstructorsJustDelta() { Alpha alpha = createAndRefreshApplicationContext("two-constructors", "delta"); assertJustDelta(alpha); } @Test public void twoConstructorsCharlieAndDelta() { Alpha alpha = createAndRefreshApplicationContext("two-constructors", "charlie", "delta"); assertCharlieAndDelta(alpha); } @Test public void fourConstructorsNoCharlieNoDelta() { Alpha alpha = createAndRefreshApplicationContext("four-constructors"); assertNotNull(alpha.getBravo()); } @Test public void fourConstructorsJustCharlie() { Alpha alpha = createAndRefreshApplicationContext("four-constructors", "charlie"); assertJustCharlie(alpha); } @Test public void fourConstructorsJustDelta() { Alpha alpha = createAndRefreshApplicationContext("four-constructors", "delta"); assertJustDelta(alpha); } @Test public void fourConstructorsCharlieAndDelta() { Alpha alpha = createAndRefreshApplicationContext("four-constructors", "charlie", "delta"); assertCharlieAndDelta(alpha); } private void assertJustDelta(Alpha alpha) { assertNotNull(alpha.getBravo()); assertNotNull(alpha.getDelta()); assertEquals(1, alpha.getDelta().size()); } private void assertJustCharlie(Alpha alpha) { assertNotNull(alpha.getBravo()); assertNotNull(alpha.getCharlie()); assertEquals(1, alpha.getCharlie().size()); } private void assertCharlieAndDelta(Alpha alpha) { assertJustCharlie(alpha); assertNotNull(alpha.getDelta()); assertEquals(1, alpha.getDelta().size()); } private Alpha createAndRefreshApplicationContext(String... profiles) { GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); ctx.getEnvironment().setActiveProfiles(profiles); ctx.load("classpath:org/springframework/issues/ReproTests-context.xml"); ctx.refresh(); return ctx.getBean(Alpha.class); } }