У меня есть Spring JUnit тестер класс MySimpleTester
:почему я не могу получить доступ к ApplicationContext из ApplicationContextAware реализован компонент
@
RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:/spring/mySimpleConfig.xml"})
public class MySimpleTester {
@Before
public void setUp() throws Exception {
myAdapter = (MyAdapter) applicationContext.getBean("myAdapter");
}
@test
public void testGetSimpleList() {
List<SimpleLink> simpleList = **myAdapter.getSimpleLinksList**();
}
... ...
В классе адаптера У меня есть:
public MyAdapter {
public List<SimpleLink> getSimpleLinksList() {
List<SimpleLink> simLinks = null;
String environment = AppFactory.getPropertiesObj();
... ...
class AppFactory implements ApplicationContextAware {
private static ApplicationContext context;
public void setApplicationContext(ApplicationContext acontext) {
context = acontext;
}
public getPropertiesObj() {
return getAppContext().getBean("propertiesBean");
}
я NullPointerException
и видеть, что ApplicationContext
является Null
здесь.
Однако на SpringJUnitTestRunner
класс MySimpleTester
Я мог бы найти правильную инициализацию applicationContext. Я не включаю mySimpleConfig.xml
и включенные файлы. Метод в MyAdapter
класс getSimpleLinksList()
отлично работает с веб-приложением при запуске на сервере приложений, и там создается текст приложения.
Только из тестера весны он не может достичь статического контекста приложения AppFactory
класса, так как он называется статически через AppFactory.getPropertiesObj()
. У меня был правильный путь к классам, так как выполняются другие тестовые классы.
Как бы 'MyAdapter.getSimpleLinksList()' даже скомпилировать с 'AppFactory.getPropertiesObj()' is ** not ** static? – hzpz
В реальной программе у меня есть метод static. При написании здесь я пропустил набор. public static String getPropertiesObj() { return getAppContext(). getBean ("propertiesBean"). toString(); } – stillanovice