TDD 单元测试遇到问题整理

博客内容涉及TDD单元测试中遇到的问题,包括ojdbc.jar未引入导致的错误、未引入相关依赖的问题以及@Controller中@Service注解失效的解决办法。解决方法包括正确引入ojdbc14.jar,理解项目原有依赖情况,以及使用MockMvc的不同配置来解决@Controller对@Service的注入问题。

1.ojdbc.jar未引入,导致以下问题
错误:

Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [oracle.jdbc.driver.OracleDriver]
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:121)
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:75)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1502)
    ... 104 more

解决:
web app libraries 引入ojdbc14.jar
2.未引入相关依赖,虽然解决了,但不知道为什么,因为原来的项目没引入这个包也没问题
错误:

Caused by: java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 33 more

解决:

<dependency>
       <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-servlet_3.0_spec</artifactId>
       <version>1.0</version>
       <scope>test</scope>
</dependency>

3. @InjectMocks 失效,在controller中调用service时,没有返回mock后的值,而是真正定义的值
错误:service调用不是想定值
解决:spring test 提供两种测试方式:独立安装和集成Web环境测试
独立安装方式:在setUp中的代码为:
this.mockMvc = MockMvcBuilders.standaloneSetup(**Controller,**Controller).build();
这种方式不会通过spring的框架,所有组件自己注入
集成Web环境测试方式:在setUp中的代码为:
this.mockMvc = webAppContextSetup(this.wac).build();

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值