zoukankan      html  css  js  c++  java
  • spring整合Junit

    Spring整合Junit

    3.1原始Junit测试Spring的问题

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

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

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

    3.2 上述问题解决思路

    • 让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉它

    • 将需要进行测试Bean直接在测试类中进行注入

    3.3 Spring 集成Junit代码实现

    ① 导入spring集成Junit的坐标

    ② 使用@Runwith注解替换原来的运行期

    ③ 使用@ContextConfiguration指定配置文件或配置类

    ④ 使用@Autowired注入需要测试的对象

    ⑤ 创建测试方法进行测试

    3.4 Spring 集成Junit代码实现

    ①导入spring集成Junit的坐标

    <!--此处需要注意的是,spring5 及以上版本要求 junit 的版本必须是 4.12 及以上-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

    ②使用@Runwith注解替换原来的运行期

    @RunWith(SpringJUnit4ClassRunner.class)
    public class SpringJunitTest {
    }

    ③使用@ContextConfiguration指定配置文件或配置类

    @RunWith(SpringJUnit4ClassRunner.class)
    //加载spring核心配置文件
    //@ContextConfiguration(value = {"classpath:applicationContext.xml"})
    //加载spring核心配置类
    @ContextConfiguration(classes = {SpringConfiguration.class})
    public class SpringJunitTest {
    }

    ④使用@Autowired注入需要测试的对象

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = {SpringConfiguration.class})
    public class SpringJunitTest {
        @Autowired
        private UserService userService;
    }

    ⑤创建测试方法进行测试

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = {SpringConfiguration.class})•public class SpringJunitTest {
        @Autowired
        private UserService userService;
        @Test
        public void testUserService(){
         userService.save();
        }
    }

     

  • 相关阅读:
    <a>标签实现锚点跳跃,<a>标签实现href不跳跃另外加事件(ref传参)
    ThinkPHP实现事务回滚示例代码(附加:PDO的事务处理)
    python 命令执行文件传递参数
    python os.walk()
    python sys.stdin、sys.stdout和sys.stderr
    Python 为什么sys.stdout.write 输出时后面总跟一个数字
    python 不同集合上元素的迭代 chain()
    Python zip() 处理多于两个序列的参数, 存储结对的值
    Python 成对处理数据 zip()
    python 同时迭代多个序列
  • 原文地址:https://www.cnblogs.com/DiaoStudy/p/13741860.html
Copyright © 2011-2022 走看看