使用junit测试用例

来源:互联网 发布:加工中心钻孔手动编程 编辑:程序博客网 时间:2024/05/12 03:56
通常只会使用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     @Before22     public void setUp() throws Exception{23         //创建sqlSessionFactory24         //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     @Test34     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 mrf14 * @date 2015-9-19 下午05:57:03 15 *16  */17 public class UserDaoImpl implements UserDao {18 19     // 需要向dao实现类中注入SqlSessionFactory20     // 这里通过构造方法注入21     private SqlSessionFactory sqlSessionFactory;22     23     public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {24         this.sqlSessionFactory = sqlSessionFactory;25     }26 27     28     @Override29     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     @Override41     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     @Override51     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     @Override65     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 0
原创粉丝点击