TDD 单元测试遇到问题整理

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.specsgroupId>
       <artifactId>geronimo-servlet_3.0_specartifactId>
       <version>1.0version>
       <scope>testscope>
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();

你可能感兴趣的:(TDD)