巴拉巴拉
小魔仙

Spring4+MyBatis3+Junit4

Spring4+MyBatis3+Junit4进行单元测试。

每次写完MyBatis的SQLMapper,启动web服务测试是很慢而且麻烦的。

所以网上爬了一下Junit使用方法,做个记录吧。

Java部分代码:

package com.againfly.junit.test;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

import cn.ictt.entity.base.CustType;
import cn.ictt.service.base.CustTypeService;

@ContextConfiguration(locations={"classpath:/spring/ApplicationContext.xml", 
		"classpath:/spring/ApplicationContext-mvc.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
public class JUnitTest extends AbstractJUnit4SpringContextTests {
	
	@Resource
	private CustTypeService custTypeService;
	
	@Test
	public void test() throws Exception {
		CustType t = new CustType();
		t.setCustTypeId(0);
		t.setCustTypeName("A类");
		custTypeService.save(t);
		System.out.println(custTypeService.listAll());
	}
}
  1. 1.从代码中可以看出,如果有多个spring配置文件是可以用逗号隔开放在@ContextConfiguration注解下的。
  2. 可以使用@Resource来获取注入的Bean
  3. 可以设置事务是否rollback(未测试通过,可能是我的配置有问题)
  4. .测试类需要继承AbstractJUnit4SpringContextTests这个抽象类。
    ——这个抽象类封装了一个log4j的logger对象和一个Spring的applicationContext对象。

_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_

现在来说下配置过程出遇到的错误:

  • 找不到ApplicationContext.xml——如果填不好路径可以去web.xml文件里面找spring的配置路径。
  • 找不到dbconfig.properties
    先贴上原来的配置.properties部分:

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    	<property name="locations">  
    		<list>  
    			<value>/WEB-INF/classes/dbconfig.properties</value>
    		</list>  
    	</property>  
    </bean>

    ——>>>>>>>>>>>>>>>>>>>>>这是改过后的部分:

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    	<property name="locations">  
    		<list>  
    			<value>classpath:/dbconfig.properties</value>
    		</list>  
    	</property>  
    </bean>

好了,现在Spring4+MyBatis3+Junit4配置的测试单元环境就已经搭好了。
如果有错误可以提出来,谢谢~

最近一直在加班比较忙,没有写发新的博客,所以赶在月底的时候发布了一篇。^_^

/////////////////////////////////////////////////////////////////////////////////////////////

最近使用这段测试代码,非常的方便的可以进行单元测试,但是发现了一个问题,这里补充一下吧。

Log4j的配置在单元测试里面并没有有效的发挥作用,而是使用了Spring自带的一个Log配置,现在,我们吧这个Log配置改成我们现在系统中的log4j.properters配置

我们在JUnitTest测试类里面有一个类注解是@RunWith(SpringJUnit4ClassRunner.class)

现在把这个类给重写一下:

import java.io.FileNotFoundException;

import org.junit.runners.model.InitializationError;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.Log4jConfigurer;

public class JUnit4ClassRunner extends SpringJUnit4ClassRunner {

	static {
		try {
			Log4jConfigurer.initLogging("classpath:log4j.properties");
		} catch (FileNotFoundException ex) {
			System.err.println("Cannot Initialize log4j");
		}
	}

	public JUnit4ClassRunner(Class<?> clazz) throws InitializationError {
		super(clazz);
	}
}

之后我们再把注解改成@RunWith(JUnit4ClassRunner.class)就可以了。

赞(0) 打赏
如果文章对你有帮助,欢迎你来评价反馈。AgainFly » Spring4+MyBatis3+Junit4

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • Q Q(选填)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏