0

将@Autowired 添加到我的服务层会导致 Junit 错误无法加载 ApplicationContext?

我的公司有一些我们都核心的评论代码。我今天想将它添加到我的服务中,所以我将它添加到 POM.XML 中,然后我做了:

@Autowired
private CoreDao coreDao;

一旦我添加了这个,我的 JUnit 测试就开始给我错误。:

Failed to load ApplicationContext

所以我评论了这两行,一切都很好。为什么添加大约两行会破坏我的测试

这是我的 jUnit 测试,所以我不知道它为什么要找它

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=TestDatabaseConfig.class)
public class TestApp {


    private static Log LOGGER = LogFactory.getLog(TestApp.class.getName());

    @Autowired
    private MemberInquiryService service;

    @Test
    public void testgetMemeberRequestInformation() {

        MemberRequest inMemberRequest = new MemberRequest();

        inMemberRequest.setRequestor("cpilling04@aol.com.dev");
        MemberInquiryInformation testInfo = service.getMemeberRequestInformation(inMemberRequest);

        Assert.assertEquals(testInfo.getFirst_Name(), "Christine");
        Assert.assertEquals(testInfo.getLast_Name(), "Pillings");
    }


    @Test
    public void testListMemberInquirys(){

        List<MemberInquiry> listMemberInquirys = service.listMemberInquirys();

        LOGGER.debug("Number of MemberInquiry(S) returned (" + listMemberInquirys.size() +")");


    }

}

我将堆栈跟踪记录到https://docs.google.com/document/d/1KU-63IQBbptjVNGGImtEBL9VIk04CCGBFiJuIjp_8d0/edit?usp=sharing

4

2 回答 2

0

两种可能:

  1. 正如 SJS 所说,您忘记了 @ComponentScan 并且 spring 无法将您的 CoreDao 自动连接到特定类型。
  2. 如果 CoreDao 是基于 JPA 的,如果您在 persistence.xml 中没有设置,则需要相应的表:

我有类似的问题,我花了几天时间才弄清楚。最后我把 value="create" 而不是 value="validate" 来解决问题。

于 2013-03-30T01:37:19.393 回答
0

原因在于 DataConfig 没有对包含核心 bean 的包执行 ComponentScan。

例子:

@ComponentScan(basePackages= { "org.xxxx.inquiry", "org.xxxx.core" })
于 2013-03-20T16:08:58.907 回答