Junit是一个非常好的测试框架,无论是单元测试还是模块测试都是不错的选择。如果配合使用Spring的测试框架就能提供事务了,要了解Spring的测试框架,可以去Spring的分类。
下面我来说说基本的使用:
首先,我们使用MyEclipse6.0时已经集成了Junit这个框架了,使用非常简单,大家可以先生成一个需要被测试的类。
比如我用EJB3.0的会话bean做一个例子:
package org.sp.dao.impl;
import java.util.List;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.sp.dao.ClassesDao;
import org.sp.entity.Classes;
@Stateless(name="ClassesDao")
@Remote
public class ClassesDaoImpl implements ClassesDao {
@PersistenceContext(unitName="EJB_EntityManagerDemoPU")
private EntityManager em;
public void delete(int id) {
em.remove(em.find(Classes.class, id));
}
public List<Classes> findAll() {
Query query = em.createQuery("from Classes");
return query.getResultList();
}
public Classes findById(int id) {
return em.find(Classes.class, id);
}
public void save(Classes c) {
em.persist(c);
}
public void update(Classes c) {
em.merge(c);
}
然后在客户端生成一个测试类:
package org.sp.test;
import java.util.List;
import javax.naming.InitialContext;
import junit.framework.TestCase;
import org.sp.dao.ClassesDao;
import org.sp.entity.Classes;
public class ClassesDaoTest extends TestCase {
private ClassesDao cd;
protected void setUp() throws Exception {
InitialContext ctx = new InitialContext();
this.cd = (ClassesDao)ctx.lookup("ClassesDao/remote");
}
protected void tearDown() throws Exception {
super.tearDown();
}
// public void testDelete() {
// cd.delete(1);
//
// public void testFindAll() {
// List<Classes> lc = this.cd.findAll();
// for (Classes c : lc){
// System.out.print(c.getCId()+" "+c.getCName());
// }
// public void testFindById() {
// Classes c = this.cd.findById(2);
// System.out.print(c.getCId()+" "+c.getCName());
//
// public void testSave() {
// Classes c = new Classes();
// c.setCName("一年A班A组");
// this.cd.save(c);
//
// public void testUpdate() {
// Classes c = new Classes();
// c.setCId(1);
// c.setCName("一年A班B组");
// this.cd.update(c);
// }
}
需要注意的是,通过MyEclipse的向导可以轻松的构建一个测试类,方法名都已经自动生成了。只要自己添加实现 就可以了。如果你手动生成测试类的话有几点需要特别注意:
1.测试类必须继承junit.framework.TestCase
2.测试的方法返回值必须是void,并且方法名必须是以test开头后面的单词第一个字母大写,如:public void testDelete()
protected void setUp() throws Exception {
}
该方法是初始化测试用例的方法
protected void tearDown() throws Exception {
}
该方法是销毁用例的方法
注:一般只要设置setup()方法就可以了,运行直接单击run-->Junit test 就可以了,运行结果会在junit窗口显示,当全部通过时,运行结果为绿色,有错误则是红色
还有一点需要特别指出,Junit的断言个人感觉用起来不太舒服,不用断言也可以达到目的,而且个人觉得不用断言使测试逻辑更加清晰。如果你喜欢使用断言,那我也没什么可说的了!呵呵,萝卜青菜各有所爱!