概念:
JUnit是一个回归测试框架。
JUnit测试是程序员测试(用于单元测试),即所谓白盒测试。
特点:
1.用于测试期望结果的断言(Assertion)
可以在测试前设定一个期望结果值,然后使用断言来判断期望值和实际值是否相同。
2.用于共享共同测试数据的测试工具
使用JUnit测试的数据会保存到数据库中,所以其他人也可以直接使用。
3.用于方便的组织和运行测试的测试套件
使用JUnit的测试非常简单,只要继承TestCase即可,而且可以使用JUnit Test直接运行测试方法。
4.图形和文本的测试运行器
除了直接运行测试方法,还可以再建立一个main方法,设置运行方式为图形或文本,以Java Application运行。
示例:
先在项目中引入junit的jar包(在Hibernate_Home/lib/目录下),接着编写测试类:
package com.dan.hibernate;
import junit.framework.TestCase;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class SessionTest extends TestCase {
public static void main(String[] args){
//文本测试运行器
//junit.textui.TestRunner.run(SessionTest.class);
//图形测试运行器
junit.swingui.TestRunner.run(SessionTest.class);
}
public void testGet() {
Session session = null;
try {
//读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
//建立SessionFactory
SessionFactory factory = cfg.buildSessionFactory();
session= factory.openSession();
session.beginTransaction();
User user = (User)session.get(User.class, "4028983c35b79b760135b79b77aa0001");
//实际值
String username = user.getName();
//设置期望值
String expected = "赵丹丹";
//使用断言查看期望值与实际值是否相同
this.assertEquals(expected, username);
System.out.println("testGet:" + username);
session.getTransaction().commit();
} catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
} finally {
if (session != null){
if (session.isOpen()){
session.close();
}
}
}
}
}
使用JUnit运行testGet()结果:
成功则控制台输出:testGet:赵丹丹
失败则控制台没输出,而JUnit会提示失败:
使用文本的测试运行器(使用Java Application运行main方法):
使用图形的测试运行器(使用Java Application运行main方法):
并且控制台输出: