传统的测试
存在问题:
1,每个测试都要重新启动Spring容器,启动容器的开销大,测试效率低下。
2,不应该是测试代码管理Spring容器,应该是Spring容器在管理测试代码。
正确使用Spring的测试
如何使用Spring测试
导入spring测试的jar包
Spring测试必须保证Eclipse的单元测试的最低版本是 4.12版本,如果使用的Eclipse版本很低,那么单元测试版本可能低于4.12,那么需要开发者手动导入单元测试的jar包
如果使用Spring方式测试,必须使用两个注解
@RunWith注解
表示先启动Spring容器,把junit运行在Spring容器中
@ContextConfiguration注解
从哪里加载资源文件,默认从src(源目录)下面加载
案例代码
package cn.xc.spring.test;
import static org.junit.Assert.*;
import javax.annotation.Resource;
import javax.swing.Spring;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.xc.spring.config.SpringConfig;
import cn.xc.spring.service.CustomerService;
//表示先启动Spring容器,把junit运行在Spring容器中
@RunWith(SpringJUnit4ClassRunner.class)
//表示从哪里加载资源文件,默认从src(源目录)下面加载
@ContextConfiguration("classpath:applicationContext.xml")
public class CustomerServiceTest {
@Resource
ApplicationContext context;
@Test
public void testSpring() throws Exception {
//1.获取Spring容器对象
//AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(“applicationContext.xml”);
//2.获取CustomerController对象
CustomerService controller = context.getBean("customerService",CustomerService.class);
//执行保存方法
controller.save();
}
}
纯注解方式的配置
@ContextConfiguration()
classes 属性: 读取spring的纯java配置文件
package cn.xc.spring.test;
import static org.junit.Assert.*;
import javax.annotation.Resource;
import javax.swing.Spring;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.xc.spring.config.SpringConfig;
import cn.xc.spring.service.CustomerService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=Spring.class)
public class CustomerServiceTest {
@Resource
ApplicationContext context;
@Test
public void testSpring() throws Exception {
//1.获取Spring容器对象
//AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class);
//2.获取CustomerController对象
CustomerService controller = context.getBean("customerService",CustomerService.class);
//执行保存方法
controller.save();
}
}