Junit4入门测试附带了点Hbernate

package com.zlp.test;

import static org.junit.Assert.assertEquals;

import java.util.Iterator;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import com.zlp.hibernate.Person;
	/*
	 * 下面是几种常用的测试批注:
		*@Test:进行测试的方法
		@Before:初始化方法,每个@Test批注的方法执行前都会先调用此方法
		@After:释放资源,每个@Test批注的方法执行后都会调用此方法
		@BeforeClass:必须为static void,测试类中第一个执行的方法,只执行一次
		@AfterClass:必须为static void,测试类中最后一个执行的方法,只执行一次
		@Ignore:忽略的测试方法,不影响最终测试结果是通过还是没通过
		一个JUnit 4 的单元测试用例执行顺序为:
		@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
		每一个测试方法的调用顺序为:
		@Before –> @Test –> @After
	 	测试类一般写成XXXtest,测试方法用testXXX */
public class HibernateUtilsTest {
	public static Session session = null;
	/*
	 * @BeforeClass: 所有测试开始之前运行 //必须定义为static方法
	 * @AfterClass: 所有测试结束之后运行   //必须定义为static方法
	 */
	
	
	@BeforeClass
	public static void classBefore(){
		System.out.println("~~~~~~classBefore~~~~~~~~~");
	}
	
	@Before
	public void init(){
		System.out.println("~~~~~before~~~~~~~~");
		Configuration config = new Configuration().configure();
		SessionFactory factory = config.buildSessionFactory();
		session = factory.openSession();
	}
	//@Ignore
	@Test
	public void testSave(){
		session.beginTransaction().begin();
		Query sqlquery = session.createQuery("from Person");
		Iterator<Person> it = sqlquery.iterate();
		while(it.hasNext()) {
			Person person = it.next();
			System.out.println(person.getPassword());
		}
	}
	//@Ignore
	@Test
	public void add(){
		int a = 1;
		int b = 2;
		assertEquals(3, a+b);
		
	}
	/*
	 * 该元数据传入了一个时间(毫秒)给测试方法,如果测试方法在制定的时间之内没有运行完,则测试也失败。
	 */
	@Test(timeout=2000)
	public void testTimeOut(){
		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(100);
				
			}catch (Exception e) {
				// TODO: handle exception
			}
		}
	}
	/*
	 * 该元数据标记的测试方法在测试中会被忽略。,你可以为该标签传递一个String的参数,
	 * 来表明为什么会忽略这个测试方法。比如:@lgnore(“该方法还没有实现”),
	 * 在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。
	 */
	@Ignore("该标签会忽略此测试方法")
	@Test
	public void add1(){
		int a = 1;
		int b = 2;
		assertEquals(3, a+b);
		
	}
	
	@Test(expected=NullPointerException.class)
	public void testException(){
		 throw new NullPointerException();
	}
	
	
	@After
	public void destory(){
		System.out.println("~~~~~~after~~~~~");
		session.beginTransaction().commit();
		session.close();
	}
	@AfterClass
	public static void classAfter(){
		System.out.println("~~~~~~classAfter~~~~~~~~~");
	}
	
}

Hamcrest

JUnit4.4引入了Hamcrest框架,Hamcrest提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活;

 

你可能感兴趣的:(exception,String,session,单元测试,测试,JUnit)