一、今天完成的任务
1.完成MyBatis映射文件
在昨天完成的mybatis的查找数据的基础上,在映射文件usersMapper.xml添加其他CRUD方法

2.学习Junit
(1)了解Junit测试和主方法测试相比有什么优点
①实际进行开发时,我们会编写大量的函数,采用主方法测试需要编写大量的代码,而且还需要对测试的结果逐个检查,工作量非常大。使用Junit4进行测试可以一次进行多种测试,只要查看结果bar是不是绿色的就行。当bar为红色时,根据Failure Trace可以快速定位问题,方便修改。
②进行单元测试可以减少后期维护成本
(2)了解注解有哪些、怎么使用的
常用的注解有:
@Test 表示测试方法
@Ignore 用于写好接口,实现类还没有完成的情况。执行单元测试时,会跳过这一方法
@Before 每一个@Test执行前都会执行一次的功能,例如获取数据库连接
@After 每一个@Test执行完毕后都会执行一次的功能,例如关闭数据库连接
(3)了解测试类编写规范
①命名规范 测试单元类名一般为"源文件类名+Test"
测试方法名一般为"test+源文件方法名"
②方法前要使用标注 在测试类中并不是每一个类都是用来调试的,要用标注来标明
③测试方法返回类型为void
④测试方法不带变量
3.用单元测试检验MyBatis的CRUD操作
(1)新建一个package,在其下新建一个工具类MybatisUtil,封装openSession()方法以及设置自动提交事务
工程目录如下:
工具类MybatisUtil的代码如下:
(2)编写测试方法testAddUser()
右键包com.step17.mybatis.Test,新建一个JUnit测试类TsetCURD,代码如下
package com.step17.mybatis.Test;
import java.io.IOException;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.step17.mybatis.Users;
public class TestCRUR {
@Test
public void testAddUser() throws IOException {
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.step17.mybatis.usersMapper.addUser";
Users user = new Users();
user.setName("阿童木");
user.setAge(9);
int result = sqlSession.insert(statement,user);
sqlSession.close();
System.out.println(result);
}
}
在空白处右键RUN AS JUnit Test
失败了,查看Failure Trace,原来是重启电脑MySQL服务关掉了
进入任务管理器把MySQL服务打开,再运行一次测试
控制台显示如下,第一个测试通过
.png)

(3)完成剩下的单元测试代码
完整代码如下
package com.step17.mybatis.Test;
import java.io.IOException;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.step17.mybatis.Users;
public class TestCRUR {
//插入数据
@Test
public void testAddUser() throws IOException {
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.step17.mybatis.usersMapper.addUser";
Users user = new Users();
user.setName("阿童木");
user.setAge(9);
int result = sqlSession.insert(statement,user);
sqlSession.close();
System.out.println(result);
}
//更新数据
@Test
public void testUpdateUser() throws IOException{
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.step17.mybatis.usersMapper.updateUser";
Users user = new Users();
user.setName("路飞");
user.setAge(16);
user.setId(4);
int result = sqlSession.update(statement, user);
sqlSession.close();
System.out.println(result);
}
//删除数据
@Test
public void testDeleteUser() throws IOException{
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.step17.mybatis.usersMapper.deleteUser";
int result = sqlSession.update(statement, 4);
sqlSession.close();
System.out.println(result);
}
//通过ID查找数据
@Test
public void testGetUser() throws IOException{
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.step17.mybatis.usersMapper.getUser";
Users user = sqlSession.selectOne(statement, 3);
sqlSession.close();
System.out.println(user);
}
//通过名字查找数据
@Test
public void testGetUserByName() throws IOException{
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.step17.mybatis.usersMapper.getUserByName";
Users user = sqlSession.selectOne(statement,"柯南");
sqlSession.close();
System.out.println(user);
}
//查找所有数据
@Test
public void testGetAllUsers() throws IOException{
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
String statement = "com.step17.mybatis.uesrsMapper.getAllUsers";
List<Users> lstusers = sqlSession.selectList(statement);
sqlSession.close();
System.out.println(lstusers);
}
}
4.运行单元测试
结果如下,查找所有用户的方法失败了,说是找不懂路径,搞了半天也没搞懂怎么弄

二、遇到的问题
测试方法有一个失败了,自己找不出原因
三、解决问题的方法
明天问一下实行
四、明天的计划
1.学习log4j
2.学习Spring
五、进度
任务当前进度:任务1 步骤18
任务开始时间:2017.08.08
预计提交任务1时间:2017.08.18
是否有延期风险:无
评论