如何在JUnit测试中强制自动装配?

时间:2012-05-11 19:06:50

标签: java spring junit autowired

我正在使用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方法,但如果这是唯一的方法,那就这样吧。

1 个答案:

答案 0 :(得分:0)

Spring管理的EventFeed类,我的意思是使用@Service@Component注释的EventFeed类。您还需要在测试权中@Autowired EventFeed AbstractParsetTest。我在{{1}}

中没有看到这一点