spring3单元测试遇到的问题小结ITeye - 众发娱乐

spring3单元测试遇到的问题小结ITeye

2019年02月25日12时07分35秒 | 作者: 惜梦 | 标签: 问题,项目,测验 | 浏览: 3066

今日在做spring的单元测验,其间遇到不少问题,不过,大多都是环境的原因引起的。由所以两个分隔的项目,一个作为另一个的支撑项目,只要是待开发好后,供另一个项目jar包用的。就由于这样,开发环境引证的jar包不同。

 

1、一开端,就遇上hamcrest没有包括的问题,本来是我的junit版别引起的,我的junit版别中没有包括hamcrest。

 

2、Offending resource: class path resource [xml/applicationContextTest.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/tx]
Offending resource: class path resource [xml/datasourceTest.xml]

一看就知道是xml装备文件姓名空间的问题,这个问题也花了不少时刻。

后来在csdn上,一位仁兄这样说:假如遇到这个问题,就要留意看你的jar包中的META-INF目录下是不是有这两个文件:spring-handlers及spring-schemas!

csdn的途径:http://topic.csdn.net/u/20110913/11/0f07ef84-fe7a-4505-8ef3-7851df0998a4.html

所以我细心检查一下我的jar,本来,居然没有把jar包引进来!(org.springframework.transaction-3.0.5.RELEASE.jar)

后边遇到的几个问题,就知道缺包了。一个个引进。

 

3、基本上能够跑起来了,开端抛出:org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named transactionManager is defined 这样的反常。

确实,我的装备中没有transactionManager界说的,由于,多数据源的原因。

在google中搜了一把。

引证:

My understanding is that in the context of unit tests ( ), the code that otherwise looks up the transaction manager is not used ( ).

You could try to annotate your test class with , which accepts a transactionManager attribute. Not the most elegant way, but possibly the best option for the time being.

地址:http://stackoverflow.com/questions/3027511/when-transactionmanager-is-not-named-transactionmanager

在咱们要测验的类中引证@TransactionConfiguration,指向自己的事务管理就能够了。

 

 

悉数代码如下:

 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:/xml/applicationContextTest.xml"})
@TransactionConfiguration(transactionManager = "tm_cmail_web")
@Transactional
public class SysModelTest {
 @Resource
 private WebSysModelService modelService;
 @Test
 @Transactional
 @Rollback(true)
 public void testCreate(){
 WebSysModel m=new WebSysModel();
 m.setModelMid("HelloDing");
 m.setModelName("ding");
 m.setCreateTime(Calendar.getInstance().getTime());
 m.setModfiyTime(Calendar.getInstance().getTime());
 short s=1;
 m.setModelType(s);
 m.setModelUrlType(s);
 modelService.create(m);
}
 小记一下,希望能帮到你。 学习的地址:
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章