0

我正在尝试学习如何使用 applicationContext。我的目标是在使用我的单元测试时将模拟数据存储库换成真实的。我不想明确地这样做,我想通过依赖注入来做到这一点。

所以在我把事情弄复杂之前作为一个简单的测试,我只是想从我的applicationContext.xml 中取出一个bean。根据我的阅读,这应该有效:

@ContextConfiguration(locations = "/applicationContext.xml")
public class ResultsListTests {

     @Resource
     CompanyResult resultBean;

     @Test
     public void shouldAddResults() {
         assertEquals(resultBean.getCompanyName(), "Microsoft");

但我的 resultBean 始终为空。这是我的 applicationContext.xml,它位于 WebContent/WEB-INF 下:

<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <bean id="resultBean" name="resultBean" class="com.trgr.cobalt.company.domain.CompanyResult">
        <property name="companyName">
            <value>Microsoft</value>
        </property>
     </bean>
</beans>

那么为什么我的 resultBean 总是 null 呢?我做错了什么?

4

1 回答 1

1

您缺少@RunWith(SpringJUnit4ClassRunner.class)注释:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/applicationContext.xml")
public class ResultsListTests {

     @Resource
     CompanyResult resultBean;

     @Test
     public void shouldAddResults() {
         assertEquals(resultBean.getCompanyName(), "Microsoft");
     }
}

顺便说一句,在您的示例中,WebContent/WEB-INF不是applicationContext.xml.

如果您指定@ContextConfiguration(locations = "/applicationContext.xml"),那么 Spring 将applicationContext.xml在类路径的根目录中查找,而不是在WebContent/WEB-INF(jUnit 100% 不知道这是一个 Web 应用程序这一事实)。

有关详细信息,请参阅Spring 参考文档

于 2010-11-17T18:21:15.767 回答