spring+junit单元测试时,实体bean注入问题

lxraiyl 2015-05-28 10:00:35
最近用spring+junit写了一个单元测试用例,但是运行时总是报错,经过一步步排查,现在定位到问题是出现在实体bean的问题。
我的applicationContext.xml配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.2.xsd">

<!-- 自动对标注@Autowired的Bean自动注入 -->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

<!--就是这里有问题,如果我把这一句注释掉,程序运行就没有问题-->
<bean id="user" class="yyuap.redis.spring.User">
</bean>
</beans>




我的User实体类,很简单,如下:

package yyuap.redis.spring;

public class User {
public User(){

}
}



测试类如下:

package yyuap.redis.spring;
import java.util.ArrayList;
import java.util.List;

import junit.framework.Assert;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import yyuap.redis.spring.dao.IUserDao;
import yyuap.redis.spring.dao.UserDao;
import yyuap.redis.spring.model.User;

/**
* 测试
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class RedisTest extends AbstractJUnit4SpringContextTests {

@Autowired
private User user;

@Test
public void testAddUser() {
System.out.println("aa");
}

public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
RedisTest test = new RedisTest();
test.testAddUser();
}
}


当我以junit test方式运行testAddUser()方法时,总会报如下错误:


但是当我直接运行main()方法时却能正确运行,我实在不知道这是什么原因了,不知道各位大神能否帮助小弟解惑
...全文
9896 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
路飞菌呀 2018-01-11
  • 打赏
  • 举报
回复
曾经我也花了好久时间在这个问题,现在看很简单: @ContextConfiguration(locations={"classpath:applicationContext.xml"}) 改为 @ContextConfiguration(locations= {"classpath*:applicationContext.xml"})
蛋蛋の忧伤 2016-04-16
  • 打赏
  • 举报
回复
你注入USER实体有什么用啊另外请使用@ContextConfiguration(locations = { "classpath*:/resources/spring.xml", "classpath*:/resources/spring-dao-test.xml"})
道玄希言 2015-05-28
  • 打赏
  • 举报
回复
額.... 这个, 貌似跟数据沒关系吧, 你得去 java 区找啊

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧