概念:
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方法):
并且控制台输出: