• 使用junit测试用例


    通常只会使用junit测试非main方法,在我眼里就是程序入口实现而已。今天,发现原来可以测试类。

    针对mybatis练习。在需要测试的UserDaoImpl类上右键,新建一个junit case,位置可以放到新创建的source folder :test里面。

    选择需要测试的方法:

    然后就会生成一个测试方法,自己补足测试方法就好:

     1 package cn.mrf.mybatis.dao;
     2 
     3 import static org.junit.Assert.*;
     4 
     5 import java.io.InputStream;
     6 
     7 import org.apache.ibatis.io.Resources;
     8 import org.apache.ibatis.session.SqlSession;
     9 import org.apache.ibatis.session.SqlSessionFactory;
    10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    11 import org.junit.Before;
    12 import org.junit.Test;
    13 
    14 import cn.mrf.mybatis.po.User;
    15 
    16 public class UserDaoImplTest {
    17     
    18     private SqlSessionFactory sqlSessionFactory;
    19     
    20     //此方法是在执行testFindUserById之前执行
    21     @Before
    22     public void setUp() throws Exception{
    23         //创建sqlSessionFactory
    24         //mybatis配置文件
    25         String resource = "SqlMapConfig.xml";
    26         
    27         InputStream inputStream = Resources.getResourceAsStream(resource);
    28         //创建会话工厂,传入mybatis的配置文件信息
    29         sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 
    30         
    31     }
    32 
    33     @Test
    34     public void testFindUserById() throws Exception {
    35         //创建UserDao对象
    36         UserDao userDao = new UserDaoImpl(sqlSessionFactory);
    37         //调用
    38         User user = userDao.findUserById(1);
    39         
    40         System.out.println(user);
    41     }
    42 
    43 }

    下面是被测试的类:

     1 package cn.mrf.mybatis.dao;
     2 
     3 import java.util.List;
     4 
     5 import org.apache.ibatis.session.SqlSession;
     6 import org.apache.ibatis.session.SqlSessionFactory;
     7 
     8 import cn.mrf.mybatis.po.User;
     9 /**
    10  * 
    11 * @ClassName: UserDaoImpl 
    12 * @Description: 接口实现类
    13 * @author mrf
    14 * @date 2015-9-19 下午05:57:03 
    15 *
    16  */
    17 public class UserDaoImpl implements UserDao {
    18 
    19     // 需要向dao实现类中注入SqlSessionFactory
    20     // 这里通过构造方法注入
    21     private SqlSessionFactory sqlSessionFactory;
    22     
    23     public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
    24         this.sqlSessionFactory = sqlSessionFactory;
    25     }
    26 
    27     
    28     @Override
    29     public User findUserById(int id) throws Exception {
    30         //sqlSession是线程不安全的,所以单独使用
    31         SqlSession sqlSession = sqlSessionFactory.openSession();
    32         
    33         User user = sqlSession.selectOne("test.findUserById",id);
    34         
    35         //释放资源
    36         sqlSession.close();
    37         return user;
    38     }
    39 
    40     @Override
    41     public List<User> findUserByName(String name) throws Exception {
    42         SqlSession sqlSession = sqlSessionFactory.openSession();
    43         
    44         List<User> list = sqlSession.selectList("test.findUserByName",name);
    45         
    46         //释放资源
    47         return list;
    48     }
    49 
    50     @Override
    51     public void insertUser(User user) throws Exception {
    52         SqlSession sqlSession = sqlSessionFactory.openSession();
    53         //执行插入
    54         sqlSession.insert("test.insertUser",user);
    55         
    56         //提交事物
    57         sqlSession.commit();
    58         // 释放资源
    59         sqlSession.close();
    60 
    61 
    62     }
    63 
    64     @Override
    65     public void deleteUser(int id) throws Exception {
    66         SqlSession sqlSession = sqlSessionFactory.openSession();
    67 
    68         //执行插入操作
    69         sqlSession.delete("test.deleteUser", id);
    70 
    71         // 提交事务
    72         sqlSession.commit();
    73 
    74         // 释放资源
    75         sqlSession.close();
    76     }
    77 
    78 }
  • 相关阅读:
    获取单选框的值
    HTML5本地存储详解
    设为首页和加入收藏
    用PhotoSwipe制作相册,手势可放大
    iOS 加载本地 HTML 文件 CSS 样式图片无效果
    PhotoSwipe简介
    Flexslider图片轮播、文字图片相结合滑动切换效果
    网页中插入视频的方法----腾讯、优酷为例
    webapp在Android中点击链接的时候会有淡蓝色的遮罩层
    C# 获取北京时间 (根据纪元时间(1970/1/1)转换为DateTime)
  • 原文地址:https://www.cnblogs.com/woshimrf/p/4821952.html
Copyright © 2020-2023  润新知