spring整合junit分析(原因加操作)

  为什么spring要整合junit:因为在测试类里面没有整合junit之前,不能用@Autowired 自动注入,得用容器生成,影响代码可读性(提高程序测试人员的效率)

原因:

  • junit单元测试中,没有main方法也能执行

  • junit集成了一个main方法 ,该方法就会判断当前测试类中哪些方法有 @Test注解,然后junit就让有Test注解的方法执行

  • junit不会管我们是否采用spring框架 ,在执行测试方法时,junit根本不知道我们是不是使用了spring框架,所以也就不会为我们读取配置文件/配置类创建spring核心容器

  • 由以上三点可知,当测试方法执行时,没有Ioc容器,就算写了Autowired注解,也无法实现注入

解决方法

1.导入spring整合junit的jar(坐标)


        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
            <version>5.0.2.RELEASEversion>
        dependency>

2、使用Junit提供的一个注解( @Runwith)把原有的main方法替换了,替换成spring提供的,在测试类前面加入@RunWith(SpringJUnit4ClassRunner.class)

3、用 @ContextConfiguration告知spring的运行器,spring和ioc创建是基于xml还是注解的,并且说明位置

  @ContextConfiguration
  locations:指定xml文件的位置,加上classpath关键字,表示在类路径下
  classes:指定注解类所在地位置 如:@ContextConfiguration(classes = SpringConfiguration.class)

注意:当我们使用spring 5.x版本的时候,要求junit的jar必须是4.12及以上

你可能感兴趣的:(maven,java)