发表于: 2017-08-09 23:55:41

2 912


一、今天完成的任务

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服务打开,再运行一次测试
控制台显示如下,第一个测试通过

(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

是否有延期风险:无




返回列表 返回列表
评论

    分享到