关于Junit结合spring测试加载bean的问题

关于Junit结合spring测试加载bean的问题

问题描述:

问题一:
public class text
{
private static final Logger logger = LoggerFactory.getLogger(text.class);
@Autowired
private NumBasicJob numBasicJob;
@Test
public void insert()
{
ApplicationContext act=new ClassPathXmlApplicationContext("spring.xml");
NumBasicJob p=(NumBasicJob) act.getBean("numBasicJob");
p.ExecuteOcfJob(text.class);
//numBasicJob.ExecuteOcfJob(text.class);
}
}
我代码全部使用注解,加载spring并没有报错,但是获取不到bean,也就是p为空,我认为可能是 ApplicationContext act=new ClassPathXmlApplicationContext("spring.xml
");不支持注解,不知道对不对?
问题2:
public class text extends BaseJunit4Test
{
private static final Logger logger = LoggerFactory.getLogger(text.class);
@Autowired
private NumBasicJob numBasicJob;
@Test
public void insert()
{
/* ApplicationContext act=new ClassPathXmlApplicationContext("spring.xml");
NumBasicJob p=(NumBasicJob) act.getBean("numBasicJob");
p.ExecuteOcfJob(text.class);*/
numBasicJob.ExecuteOcfJob(text.class);
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
"classpath:spring.xml"
})
public class BaseJunit4Test {
private static final Logger LOG_RECORD=Logger.getLogger(OcfProductBasicJob.class);
@Before
public void init() {
//在运行测试之前的业务代码
LOG_RECORD.info("start to execute task," + new Date().toString());
}
@After
public void after() {
//在测试完成之后的业务代码
LOG_RECORD.info("end to execute task," + new Date().toString());
}
}
按道理说,我使用junit结合spring进行测试的时候,numBasicJob不应该为空,因为这个支持注解。

问题1:支持注解的,但是你要在你的spring.xml文件中配置

    <!--支持注解  -->
  <context:annotation-config /> 
    <!--需要扫描的包  -->
    <context:component-scan base-package="com.cn..." > 

问题2:你这里不支持注解了,首先你想spring自动给你注入NumBasicJob ,那么你的这个类text就必须交给spring管理,也就是text这个类也需要加
@component注解。

SpringJUnit4ClassRunner.class这个是junit4的默认执行器负责执行你的junit测试