@@ -225,29 +225,6 @@ public void resolveContextHierarchyAttributesForTestClassHierarchyWithMultiLevel
225
225
assertThat (configAttributesListClassLevel3 .get (2 ).getLocations ()[0 ], equalTo ("3-C.xml" ));
226
226
}
227
227
228
- private void assertContextConfigEntriesAreNotUnique (Class <?> testClass ) {
229
- try {
230
- resolveContextHierarchyAttributes (testClass );
231
- fail ("Should throw an IllegalStateException" );
232
- }
233
- catch (IllegalStateException e ) {
234
- String msg = String .format (
235
- "The @ContextConfiguration elements configured via @ContextHierarchy in test class [%s] must define unique contexts to load." ,
236
- testClass .getName ());
237
- assertEquals (msg , e .getMessage ());
238
- }
239
- }
240
-
241
- @ Test
242
- public void resolveContextHierarchyAttributesForSingleTestClassWithMultiLevelContextHierarchyWithEmptyContextConfig () {
243
- assertContextConfigEntriesAreNotUnique (SingleTestClassWithMultiLevelContextHierarchyWithEmptyContextConfig .class );
244
- }
245
-
246
- @ Test
247
- public void resolveContextHierarchyAttributesForSingleTestClassWithMultiLevelContextHierarchyWithDuplicatedContextConfig () {
248
- assertContextConfigEntriesAreNotUnique (SingleTestClassWithMultiLevelContextHierarchyWithDuplicatedContextConfig .class );
249
- }
250
-
251
228
@ Test
252
229
public void buildContextHierarchyMapForTestClassHierarchyWithMultiLevelContextHierarchies () {
253
230
Map <String , List <ContextConfigurationAttributes >> map = buildContextHierarchyMap (TestClass3WithMultiLevelContextHierarchy .class );
@@ -335,6 +312,58 @@ public void buildContextHierarchyMapForTestClassHierarchyWithMultiLevelContextHi
335
312
assertThat (level3Config .get (0 ).getLocations ()[0 ], is ("2-C.xml" ));
336
313
}
337
314
315
+ private void assertContextConfigEntriesAreNotUnique (Class <?> testClass ) {
316
+ try {
317
+ buildContextHierarchyMap (testClass );
318
+ fail ("Should throw an IllegalStateException" );
319
+ }
320
+ catch (IllegalStateException e ) {
321
+ String msg = String .format (
322
+ "The @ContextConfiguration elements configured via @ContextHierarchy in test class [%s] and its superclasses must define unique contexts per hierarchy level." ,
323
+ testClass .getName ());
324
+ assertEquals (msg , e .getMessage ());
325
+ }
326
+ }
327
+
328
+ @ Test
329
+ public void buildContextHierarchyMapForSingleTestClassWithMultiLevelContextHierarchyWithEmptyContextConfig () {
330
+ assertContextConfigEntriesAreNotUnique (SingleTestClassWithMultiLevelContextHierarchyWithEmptyContextConfig .class );
331
+ }
332
+
333
+ @ Test
334
+ public void buildContextHierarchyMapForSingleTestClassWithMultiLevelContextHierarchyWithDuplicatedContextConfig () {
335
+ assertContextConfigEntriesAreNotUnique (SingleTestClassWithMultiLevelContextHierarchyWithDuplicatedContextConfig .class );
336
+ }
337
+
338
+ /**
339
+ * Used to reproduce bug reported in https://jira.springsource.org/browse/SPR-10997
340
+ */
341
+ @ Test
342
+ public void buildContextHierarchyMapForTestClassHierarchyWithMultiLevelContextHierarchiesAndOverriddenInitializers () {
343
+ Map <String , List <ContextConfigurationAttributes >> map = buildContextHierarchyMap (TestClass2WithMultiLevelContextHierarchyWithOverriddenInitializers .class );
344
+
345
+ assertThat (map .size (), is (2 ));
346
+ assertThat (map .keySet (), hasItems ("alpha" , "beta" ));
347
+
348
+ List <ContextConfigurationAttributes > alphaConfig = map .get ("alpha" );
349
+ assertThat (alphaConfig .size (), is (2 ));
350
+ assertThat (alphaConfig .get (0 ).getLocations ().length , is (1 ));
351
+ assertThat (alphaConfig .get (0 ).getLocations ()[0 ], is ("1-A.xml" ));
352
+ assertThat (alphaConfig .get (0 ).getInitializers ().length , is (0 ));
353
+ assertThat (alphaConfig .get (1 ).getLocations ().length , is (0 ));
354
+ assertThat (alphaConfig .get (1 ).getInitializers ().length , is (1 ));
355
+ assertEquals (DummyApplicationContextInitializer .class , alphaConfig .get (1 ).getInitializers ()[0 ]);
356
+
357
+ List <ContextConfigurationAttributes > betaConfig = map .get ("beta" );
358
+ assertThat (betaConfig .size (), is (2 ));
359
+ assertThat (betaConfig .get (0 ).getLocations ().length , is (1 ));
360
+ assertThat (betaConfig .get (0 ).getLocations ()[0 ], is ("1-B.xml" ));
361
+ assertThat (betaConfig .get (0 ).getInitializers ().length , is (0 ));
362
+ assertThat (betaConfig .get (1 ).getLocations ().length , is (0 ));
363
+ assertThat (betaConfig .get (1 ).getInitializers ().length , is (1 ));
364
+ assertEquals (DummyApplicationContextInitializer .class , betaConfig .get (1 ).getInitializers ()[0 ]);
365
+ }
366
+
338
367
@ Test (expected = IllegalStateException .class )
339
368
public void resolveConfigAttributesWithConflictingLocations () {
340
369
resolveContextConfigurationAttributes (ConflictingLocations .class );
@@ -843,4 +872,40 @@ private static class SingleTestClassWithMultiLevelContextHierarchyWithEmptyConte
843
872
private static class SingleTestClassWithMultiLevelContextHierarchyWithDuplicatedContextConfig {
844
873
}
845
874
875
+ /**
876
+ * Used to reproduce bug reported in https://jira.springsource.org/browse/SPR-10997
877
+ */
878
+ @ ContextHierarchy ({//
879
+ //
880
+ @ ContextConfiguration (name = "alpha" , locations = "1-A.xml" ),//
881
+ @ ContextConfiguration (name = "beta" , locations = "1-B.xml" ) //
882
+ })
883
+ private static class TestClass1WithMultiLevelContextHierarchyWithUniqueContextConfig {
884
+ }
885
+
886
+ /**
887
+ * Used to reproduce bug reported in https://jira.springsource.org/browse/SPR-10997
888
+ */
889
+ @ ContextHierarchy ({//
890
+ //
891
+ @ ContextConfiguration (name = "alpha" , initializers = DummyApplicationContextInitializer .class ),//
892
+ @ ContextConfiguration (name = "beta" , initializers = DummyApplicationContextInitializer .class ) //
893
+ })
894
+ private static class TestClass2WithMultiLevelContextHierarchyWithOverriddenInitializers extends
895
+ TestClass1WithMultiLevelContextHierarchyWithUniqueContextConfig {
896
+ }
897
+
898
+ /**
899
+ * Used to reproduce bug reported in https://jira.springsource.org/browse/SPR-10997
900
+ */
901
+ private static class DummyApplicationContextInitializer implements
902
+ ApplicationContextInitializer <ConfigurableApplicationContext > {
903
+
904
+ @ Override
905
+ public void initialize (ConfigurableApplicationContext applicationContext ) {
906
+ /* no-op */
907
+ }
908
+
909
+ }
910
+
846
911
}
0 commit comments