Почему консоль печатает "3"
, показывая, что это GenericWebApplicationContext
?
В интеграционном тесте с использованием Spring TestContext Framework значение ApplicationContext
равно GenericWebApplicationContext
, если вы аннотируете свой тестовый класс с помощью @WebAppConfiguration
. В противном случае это будет GenericApplicationContext
.
ApplicationContext
для интеграционного теста загружается ContextLoader
. В вашем примере конкретная реализация - это GenericXmlWebContextLoader
. Это потому, что вы указываете locations
для файла конфигурации XML.
Когда он вернет два других упомянутых типа?
В интеграционном тесте он не вернет другие упомянутые вами типы, поскольку все реализации ContextLoader
в Spring TestContext Framework создают либо GenericApplicationContext
, либо GenericWebApplicationContext
.
Можно ли получить XmlWebApplicationContext
в письменном ApplicationContextInitializer
классе при использовании TestNG?
Нет, не в тесте.
Но обычно вам не нужно полагаться на то, что это XmlWebApplicationContext
. Знание того, что это ConfigurableWebApplicationContext
(и, следовательно, WebApplicationContext
), обычно должно быть достаточным как в рабочем коде, так и в тестах.