美文网首页spring系列
04 Spring整合Junit

04 Spring整合Junit

作者: better_future | 来源:发表于2020-04-26 15:39 被阅读0次

    在测试类中,每个测试方法都有以下两行代码:

    ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
    AccountService as = ac.getBean("accountService",IAccountService.class);
    

    这两行代码的作用是获取容器,如果不写的话,直接会提示空指针异常。所以又不能轻易删掉。

    针对上述问题,我们需要的是程序能自动帮我们创建容器。一旦程序能自动为我们创建 spring 容器,我们就无须手动创建了,问题也就解决了。

    我们都知道,junit 单元测试的原理(在 web 阶段课程中讲过),但显然,junit 是无法实现的,因为它自己都无法知晓我们是否使用了 spring 框架,更不用说帮我们创建 spring 容器了。不过好在,junit 给我们暴露了一个注解,可以让我们替换掉它的运行器。

    这时,我们需要依靠 spring 框架,因为它提供了一个运行器,可以读取配置文件(或注解)来创建容器。我们只需要告诉它配置文件在哪就行了。

    <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-test</artifactId>
         <version>${spring.version}</version>
     </dependency>
    

    2、使用junit提供的一个注解把原有的main方法替换了,替换成spring提供的 @RunWith

    <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
    </dependency>
    

    注意:spring5版本时,要求junit的jar包必须是4.12及以上

    3、告知spring的运行器,spring和ioc创建是基于xml还是注解的,并且说明位置
    @ContextConfiguration
    locations:指定xml文件的位置,加上calsspath关键字,表示在类路径下
    classes:指定注解类所在位置
    @ContextConfiguration(locations = "classpath:bean.xml")
    指定配置文件的位置代替下面的代码
    ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:bean.xml")
    public class AccountServiceTest {
    
        @Autowired
        private AccountService as;
    
       @Test
        public void test1(){
           as.saveAccount();
       }
    }
    

    相关文章

      网友评论

        本文标题:04 Spring整合Junit

        本文链接:https://www.haomeiwen.com/subject/bklrwhtx.html