junit单元测试基类
自己写了一个用来简化代码的单元测试基类,省的每次都要初始化spring和获取相应的bean对象。
public class BaseTest<C> { static ApplicationContext ac = null; static { ac = new ClassPathXmlApplicationContext( new String[] {"/test-*.xml"}); } protected C target; public BaseTest() { } @Before public void setUp(){ Class<C> targetClz = (Class<C>) ((ParameterizedType) getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; String targetClzName = targetClz.getSimpleName(); String arg0 = targetClzName.substring(0,1).toLowerCase()+targetClzName.substring(1); target = (C)ac.getBean(arg0); } }
这样,在测试用例类里就比较简单了:
public class XXXDaoImplTest extends BaseTest<XXXDao>{ @Test public void testFindAll() { List<XXX> l = target.findAll(); assertTrue(l.size()>0); } }
这样做的前提是一定要遵循命名规则 - bean的id是相应类的名的首字母小写,比如 AbcDao的实现是AbcDaoImpl,声明测试类时要给出AbcDao作为泛型参数。当然BaseTest的内容很简单,如果需要定制也很方便。


