使用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 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏令仔很忙

Mybaits深入了解(三)----mybatis开发Dao的方法

程序员写代码的时候,需要写dao接口和dao实现类。而且还需要向dao实现类中注入SqlSessionFactory,在方法体内通过SqlSessionFac...

1163
来自专栏闻道于事

JFinal极速开发框架使用笔记(二) 两个问题,一个发现

最近给新人出了一个小测试,我也用JFinal框架做了一下,记录一下使用过程中遇到的坑和新学到的知识点 首先是遇到的两个小问题, 一个是用最新版的eclipse运...

3705
来自专栏猿人谷

Lombok介绍、使用方法和总结

1 Lombok背景介绍 官方介绍如下: Project Lombok makes java a spicier language by adding 'han...

4596
来自专栏LanceToBigData

Hadoop(十七)之MapReduce作业配置与Mapper和Reducer类

前言   前面一篇博文写的是Combiner优化MapReduce执行,也就是使用Combiner在map端执行减少reduce端的计算量。 一、作业的默认配置...

2427
来自专栏向治洪

仿qq聊天及定位等

聊天其实就是要实现消息推送,而推送消息就需要保持连接(长连接)。在之前项目里虽然实现了即时聊天,但是一种很本的方法。 去掉了其中的网络访问。地图试用的百度AP...

1726
来自专栏用户2442861的专栏

HttpEntity的类型及其使用

  代表底层流的基本实体。通常是在http报文中获取的实体。他只有一个空参的构造方法。刚创建时没有内容,长度为负值。需要通过两个方法,把值赋进去。

1541
来自专栏happyJared

Java类库:Lombok

  前阵子闲逛的时候,留意到了Lombok这个Java第三方库,后来亲自试用了一下,还真有一种相见恨晚的感觉,对于博主这样的懒人来说,这简直是太实用了。这不趁周...

522
来自专栏编码小白

tomcat请求处理分析(六)servlet的处理过程

1.1.1.1  servlet的解析过程 servlet的解析分为两步实现,第一个是匹配到对应的Wrapper,第二个是加载对应的servlet并进行数据,这...

5587
来自专栏XAI

【人工智能】动物、植物、车型、菜品、LOGO识别示例代码

图像识别部分接口Java-API调用示例代码 https://gitee.com/xshuai/ai/不是完整的web项目大家没必要下载运行。复制|下载相关代码...

60311
来自专栏Ryan Miao

Mybatis-mapper-xml-基础

今天学习http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html。关于mapper.xml的sql语句的使用。 项...

32410

扫码关注云+社区