junit
当前测试的时候要先获取1.容器对象 2.service对象
然后Test测试service对象调用方法增删改查
现在目标是:不希望测试类里还要初始化这两个对象
我们不是学了直接从容器中取对象那就配个注解直接取
但是发现取不到,没有办法调用任何方法测试
原因:
Junit原理:
- 程序的入口是main方法
- Junit没有main方法也能执行,但集成了一个main方法 检测当前测试类里面被@Test注解的方法 就测试
- Junit无法检测到当前的是什么框架 也不会去读取配置文件/配置文件类
创建IOC容器 在当前的测试类写注解 也无法实现注入
配置
- 1.导入spring整合junit的jar包
- 使用Junit提供的注解把自己集成的main方法替换成Spring的
@RunWith
这样他在是个在自我里的类了 和外面的世界有联系了 可以创建容器了
- 3.告知spring运行期是基于xml还是配置类创建的ioc容器和spring,并且说明位置
@ContextConfiguration
其中classes
指定注解配置类所在位置
@locations("classpath:配置文件名.xml")
指定xml配置文件所在位置 加上classpath关键字表示类路径
当前这个注解配置类的Junit测试类就变成现在这样:
xml配置文件的Junit:
注意Spring 5.x版本要求Junit的版本要大于4.12
总结:刚刚这些配置都是因为以前的Junit是自己集成main的现在我们让他变成spring提供的runwith
以前的Junit都是不会读取配置文件或者配置文件类的现在我们通过ContextConfiguration注解可以告知Junit我们用的是那种位置在哪 你可已去读然后创建容器
现在我们就可以直接用@autowired注解从容器中取对象调用方法进行test测试了
不像从前只能new 对象