使用Junit4对由Maven管理的Spring项目进行单元测试
来源:互联网 发布:漫画配音软件 编辑:程序博客网 时间:2024/05/16 15:18
今天需要开发一个暂时没有页面的功能,这样就不能通过普通的B/S访问去调用代码。以前把JUnit看的太小儿科,所以根本没有想到还能用它结合Srping来测试Service层或者Dao层的逻辑。
这里主要记录一下在使用JUnit+Spring+Maven遇到的问题和解决方法,以便日后深入学习。
首先使用JUnit4,创建JUnit类,具体方法不在赘述。
因为不是测试简单的几行Java程序,需要连接数据库和使用Spring配置,所以与通常JUnit的写法不一样,这里需要获取并启动Spring的容器。
这里先说明一下,本文没有使用SpringFrameWork提供的单元测试。所以需要手动获取ApplicationContext。可以写在@before的方法中。
ApplicationContext axt = new ClassPathXmlApplicationContext(new String[] {"classpath:applicationContextTest.xml"});testClass= (testClass) axt.getBean("testClass");
这里有一个需要注意的地方,就是:
classpath:applicationContextTest.xml和
classpath*:applicationContextTest.xml
这两个写法的区别在于第一种只会到classpath下面的相应路径加载配置文件。第二种如果在classpath下找不到的话,还会去classpath中的jar文件中去寻找,并且如果有多个满足条件的话可以全部加载。
好的,第一个问题出现了。运行Junit提示错误信息:“NoSuchBeanDefinitionException”。
不管是用名称还是用类型加载,都无法注入这个类。
原因是这篇文章最后说到的:所使用到的类必须手动在xml文件中配置,不然将会发生类型不匹配的错误。
所以在配置文件中声明我要测试的bean。
<bean id="testClass" class="workFlowTest.testData.TestClass" autowire="default"><property name="sqlSession" ref="sqlSession"></property></bean><!-- SqlSessionTemplate设置 --><bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype"><constructor-arg index="0" ref="sessionFactory" /></bean>
在testClass中还有一个属性sqlSession。
@Autowiredprivate SqlSession sqlSession;
这个类的全限定名是
org.apache.ibatis.session.SqlSession
但是这个类是个接口,不能直接去注入,后来想到是不是Spring会有它的实现呢?果真在配置文件下面找到了id为sqlSession的这个类。
再次运行JUnit,又报错了:SqlException:Not Found Class:oracle.jdbc.driver.OracleDriver
只好从Maven仓库中添加依赖
<!-- 添加oracle jdbc driver --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.1.0</version> </dependency>
这样才不报错,这个问题现在还没有弄明白,这个驱动类本来应该可以加载到的,因为项目都可以正常运行,只是用了JUnit后就必须要手动添加到Libraries中。这个问题还有待研究,有哪位知道的话还烦请留言告诉我,谢谢。
与此问题相似的还有Spring的事务管理,原来的写法就会报某个类找不到,因为事务不是测试必须,所以就先将那一段注释掉。
至此运行Junit,便可以测试Dao层内容。
总结:在使用JUnit进行Spring项目的测试时,最好新建测试专用的测试类,被测试类,以及启动Spring容器所需要的配置文件。
0 0
- 使用Junit4对由Maven管理的Spring项目进行单元测试
- 使用spring提供的测试功能结合JUnit4进行单元测试
- 使用junit4+NekoHTML对页面进行单元测试
- spring项目中使用单元测试JUnit4
- 使用JUnit4进行单元测试
- maven下使用 junit对 spring进行单元测试
- 使用Junit4进行单元测试的相关配置
- junit4 对springmvc 进行单元测试
- Spring整合Junit4进行单元测试
- Spring整合Junit4进行单元测试
- Spring 整合Junit4进行单元测试
- Spring整合Junit4进行单元测试
- spring整合Junit4进行单元测试
- 使用JUnit4对SSH2框架Service/Dao层进行单元测试
- Eclipse使用jUnit4对MapReduce程序进行单元测试
- Spring项目使用JUnit4进行测试
- JUnit4基础 使用JUnit4进行单元测试
- Maven管理的Spring Web项目集成JUnit单元测试
- C++的MFC,与C#的.NET
- java中的==、equals()、hashCode()源码分析
- codeforces-366
- Codeforces 554B:Ohana Cleans Up(思维+水题)
- Kafka的应用——环信业务优化
- 使用Junit4对由Maven管理的Spring项目进行单元测试
- Jquery李炎恢——37,38对话框UI【3】【4】
- RandomAccessFile的应用
- 【26-30】剑指offer
- 1412: [ZJOI2009]狼和羊的故事
- Android无法显示超大图问题的探索
- iOS-View适应文字
- Android如何判断应用程序是安装在手机内存中还是SD卡
- 博客已迁移至github pages