spring2.5 junit4.x单元测试实例

先贴上代码吧,

1.基础类,用于加载环境配置信息

package com.xxxx.xxx.oss.base;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * [Product]
 *     xxxxxxx
 * [Copyright]
 *     Copyright © 2010 xxxxxxx All Rights Reserved.
 * [FileName]
 *     BaseTest.java
 * [History]
 *     Version  Date      Author     Content
 *     -------- --------- ---------- ------------------------
 *     1.0.0    Jun 17, 2010   zengjr    最初版本
 */

/**
 * <b>Summary: </b> TODO Junit 基础类,加载环境 
 * <b>Remarks: </b> TODO 基础类
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/com/xxxx/xxxxx/xxxx/config/applicationContext-*.xml" })
public class BaseTest extends AbstractTransactionalJUnit4SpringContextTests {

	/**
	 * <b>Summary: </b> 复写方法 setDataSource
	 * 
	 * @param dataSource
	 * @see org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests#setDataSource(javax.sql.DataSource)
	 */
	@Override
	@Resource(name = "adminDataSource")
	public void setDataSource(DataSource dataSource) {
		// TODO Auto-generated method stub
		super.setDataSource(dataSource);
	}

}

 2.一个实例子类,代码如下

package com.xxxx.xxxx.xxxx.dao;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import com.xxxx.xxxx.xxxx.base.BaseTest;
import com.xxxx.xxxx.xxxxx.xxxx.UserSuspectDAO;

  /**
 * [Product]
 *     XXXXX
 * [Copyright]
 *     Copyright © 2010 XXXXX All Rights Reserved.
 * [FileName]
 *     UserSuspectDAOTest.java
 * [History]
 *     Version  Date      Author     Content
 *     -------- --------- ---------- ------------------------
 *     1.0.0    Jun 17, 2010   zengjr    最初版本
 */

/**
 * <b>Summary: </b>
 *      TODO 请在此处简要描述此类所实现的功能。因为这项注释主要是为了在IDE环境中生成tip帮助,务必简明扼要
 * <b>Remarks: </b>
 *        TODO 请在此处详细描述类的功能、调用方法、注意事项、以及与其它类的关系
 */
public class UserSuspectDAOTest extends BaseTest {
	@Autowired
	private UserSuspectDAO userSuspectDAO;
	
	@Before
	public void setUp() throws Exception{
		System.out.println("junit....");
	}
//
	@After
	public void tearDown() throws Exception{
	}
	@Test
	public void testupdateStatus(){
		System.out.println("junit....");
		userSuspectDAO.updateStatus(567);
		
	}
}

 

 常遇到的问题

(上面的重写了setDataSource 是因为在我的项目里有几个dataSource,前台,后台,微博,博客四个dataSource,所以我这要这样明确指定一下

public void setDataSource(DataSource dataSource) 

)

        1.No Jnuit tests found   或者

           The input type of the launch configuration does not exist

           解决办法,鼠标点中test(这个目录与src同级)右键build path--->user as source floder

        2.

java.lang.NoSuchFieldError: NULL
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:48)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:59)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:104)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at org.junit.internal.requests.ClassRequest.buildRunner(ClassRequest.java:33)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:28)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:26)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:24)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:40)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:30)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:445)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) 
 

           解决办法,由于JUNIT的JAR 包冲突,原来用的是junit-4.4.jar,下载替换成junit-4.8.1.jar就OK了

 

依赖包:spring-test.jar,junit-4.8.1.jar

加载配置:除上面这样的写法外还可以这样写,使用classpath:xxxx

            @ContextConfiguration(locations = { " classpath:xxxxx

代码里的@Autowired是自动注入bean。

代码里的@Test告诉junit跑哪个方法为单元测试方法。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值