1 單元測試
單元測試(unit testing),是指對軟件中的最小可測試單元進行檢查和驗證。
JUnit 是 Java 社區中知名度最高的單元測試工具。
2?單元測試配置
步驟 1:添加 JUnit 的 jar 包
由于我們使用的是 JUnit,我們要確保它的 jar 包可以被應用使用。
為此,需要將 jar 包添加到應用的類路徑中。
如果使用 Maven 來構建項目,則需將下面的依賴代碼置于 pom.xml 文件中:
<dependency>
? <groupId>junit</groupId>
? <artifactId>junit</artifactId>
? <version>4.12</version>
</dependency>
步驟 2:增加工具類 MyBatisUtil
package org.mybatis.example.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* MyBatis工具類
*
* @author 大強
*
*/
public class MyBatisUtil {
public static SqlSessionFactory sqlSessionFactory;
static {
try {
// 從類路徑下加載資源文件mybatis-config.xml
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 由 SqlSessionFactoryBuilder創建SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 由 SqlSessionFactory創建SqlSession
*
* @return
*/
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
/**
* 關閉SqlSession
*
* @param sqlSession
*/
public static void closeSqlSession(SqlSession sqlSession) {
if (sqlSession != null) {
sqlSession.close();
}
}
}
步驟 3:增加測試類 AuthorMapperTest
package org.mybatis.example.mapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.mybatis.example.domain.Author;
import org.mybatis.example.util.MyBatisUtil;
/**
* 博客測試類
*
* @author 大強
*
*/
public class AuthorMapperTest {
Logger logger = Logger.getLogger(AuthorMapperTest.class);
// 注意:選中方法名,單擊鼠標右鍵,選擇 Run as -> JUnit Test,就能執行單個方法。
/**
* 查詢Author測試方法
*/
@Test
public void selectAuthorTest() {
logger.info("查詢作者開始...");
SqlSession session = MyBatisUtil.getSqlSession();
AuthorMapper mapper = session.getMapper(AuthorMapper.class);
Author author = mapper.selectAuthor(301);
if (author != null) {
logger.info(author.getId());
logger.info(author.getUsername());
}
}
/**
* 新增Author測試方法
*/
@Test
public void insertAuthorTest() {
SqlSession session = MyBatisUtil.getSqlSession();
logger.info("新增作者開始...");
AuthorMapper mapper = session.getMapper(AuthorMapper.class);
Author insertAuthor = new Author();
insertAuthor.setId(304);
insertAuthor.setUsername("克林頓insert");
insertAuthor.setPassword("12345678");
insertAuthor.setEmail("clinton.begin@gmail.com");
insertAuthor.setBio("MyBatis團隊成員");
insertAuthor.setFavouriteSection("打球");
mapper.insertAuthor(insertAuthor);
session.commit();
}
/**
* 修改Author測試方法
*/
@Test
public void updateAuthorTest() {
SqlSession session = MyBatisUtil.getSqlSession();
AuthorMapper mapper = session.getMapper(AuthorMapper.class);
logger.info("修改作者開始...");
Author updateAuthor = new Author();
updateAuthor.setId(304);
updateAuthor.setUsername("布蘭登update");
updateAuthor.setPassword("12345678");
updateAuthor.setEmail("brandon.goodin@gmail.com");
updateAuthor.setBio("MyBatis團隊成員");
updateAuthor.setFavouriteSection("跑步");
mapper.updateAuthor(updateAuthor);
session.commit();
logger.info("修改作者結束");
session.commit();
}
/**
* 刪除Author測試方法
*/
@Test
public void deleteAuthorTest() {
SqlSession session = MyBatisUtil.getSqlSession();
AuthorMapper mapper = session.getMapper(AuthorMapper.class);
mapper.deleteAuthor(304);
session.commit();
}
}