首页 > 编程语言 > 详细

Spring整合junit

时间:2019-11-20 09:15:46      阅读:63      评论:0      收藏:0      [点我收藏+]
  1. 应用程序的入口:main方法

  2. junit单元测试中没有main方法也能执行

    junit集合了一个main方法

    该方法就会判断当前测试类中有哪些方法有@Test方法

    junit就会让有@Test的方法执行

  3. junit不会管我们有没有采用spring框架

    在执行测试方法时,junit根本不知道我们是不是采用了spring框架

    所以也就不会为我们读取配置文件/配置类 创建spring核心容器

  4. 由以上三点可以知道:

     

    当测试方法执行时,没有Ioc容器,就算写了@Autowired注解,也无法实现注入


    使用Junit单元测试,测试我们的配置

    Spring整合junit的配置

    1. 导入spring的整合jubit的jar包

    2. 使用junit提供的注解把原有的main方法替换下来,替换成spring提供的 @Runwith

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

      locations : 指定xml文件的位置,加上classpath关键字,表示在类路径下

      classes : 指定注解所在的位置

      举例子:

      package com.xuefei.ui;
      
      import com.xuefei.domain.Account;
      import com.xuefei.service.IAccountService;
      import org.junit.Test;
      import org.junit.runner.RunWith;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      import java.util.List;
      /**
       * 空指针异常情况
       */
      public class UITest {
      
          @Autowired
          IAccountService accountService;
          
          @Test
          public void test1() {
      //        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
      //        IAccountService accountService = (IAccountService) applicationContext.getBean("accountService");
              List<Account> accounts = accountService.findAll();
              for (Account account : accounts) {
                  System.out.println(account);
              }
          }
      }

      解决:

      package com.xuefei.ui;
      
      import com.xuefei.config.SpringConfiguration;
      import com.xuefei.domain.Account;
      import com.xuefei.service.IAccountService;
      import org.junit.Test;
      import org.junit.runner.RunWith;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.context.ApplicationContext;
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      import org.springframework.test.context.ContextConfiguration;
      import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
      
      import java.util.List;
      /**
       *  整合Junit
       */
      @RunWith(SpringJUnit4ClassRunner.class)
      @ContextConfiguration(locations = {"classpath:beans.xml"})
      public class UITest {
          //注入accountService实例
          @Autowired
          IAccountService accountService;
          
          @Test
          public void test1() {
      //        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
      //        IAccountService accountService = (IAccountService) applicationContext.getBean("accountService");
              List<Account> accounts = accountService.findAll();
              for (Account account : accounts) {
                  System.out.println(account);
              }
          }
      }

       

Spring整合junit

原文:https://www.cnblogs.com/lililixuefei/p/11894768.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!