我正在使用Spring 3.1.0.RELEASE和JUnit 4.8.1。我无法弄清楚为什么类的成员字段没有在JUnit测试中自动装配。我的测试看起来像......
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "file:src/test/resources/testApplicationContext.xml" })
@TransactionConfiguration(defaultRollback=true)
@Transactional
public abstract class NowYouKnowEventsParserTest {
private EventFeed eventFeed;
@Before
public void setUp() {
eventFeed = getEventFeed(16);
} // setUp
@Test
public void testParser() {
Assert.assertNotSame(0, eventFeed.getEvents().size());
} // testParser
...
@Autowired
private EventFeedsDao eventFeedsDao;
protected EventFeed getEventFeed(final Integer id) {
return eventFeedsDao.findById(id);
} // getEventFeed
}
“EventFeed”类调用以下类的实例...
package com.myco.myproject.parsers;
...
public abstract class AbstractEventParser {
@Autowired
protected NetUtilsService netUtilsService;
...
}
但是到了时候,AbstractEventParser的“netUtilsService”成员字段为空。这很奇怪,因为在我的“testApplicationContext.xml”文件中,我有这个,我认为它会照顾自动装配......
<mvc:annotation-driven />
<context:component-scan base-package="com.myco.myproject" />
如何在JUnit测试中强制自动装配?我不想为成员字段添加和调用setter方法,但如果这是唯一的方法,那就这样吧。
答案 0 :(得分:0)
Spring管理的EventFeed
类,我的意思是使用@Service
或@Component
注释的EventFeed类。您还需要在测试权中@Autowired
EventFeed
AbstractParsetTest
。我在{{1}}