使用Spring单元测试出错

来源:互联网 发布:微信提现赚钱软件大全 编辑:程序博客网 时间:2024/06/05 02:25

bug如下:

九月 25, 2017 10:32:42 上午 org.springframework.test.context.support.DefaultTestContextBootstrapper getDefaultTestExecutionListenerClassNames信息: Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]九月 25, 2017 10:32:42 上午 org.springframework.test.context.support.DefaultTestContextBootstrapper getTestExecutionListeners信息: Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@79698539, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@73f792cf, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@2ed94a8b, org.springframework.test.context.support.DirtiesContextTestExecutionListener@38082d64, org.springframework.test.context.transaction.TransactionalTestExecutionListener@dfd3711, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@42d3bd8b]九月 25, 2017 10:32:43 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions信息: Loading XML bean definitions from class path resource [applicationContext.xml]九月 25, 2017 10:32:43 上午 org.springframework.context.support.GenericApplicationContext prepareRefresh信息: Refreshing org.springframework.context.support.GenericApplicationContext@4439f31e: startup date [Mon Sep 25 10:32:43 CST 2017]; root of context hierarchy九月 25, 2017 10:32:43 上午 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor <init>信息: JSR-330 'javax.inject.Inject' annotation found and supported for autowiring九月 25, 2017 10:32:43 上午 com.mchange.v2.log.MLog <clinit>信息: MLog clients using java 1.4+ standard logging.九月 25, 2017 10:32:43 上午 com.mchange.v2.c3p0.C3P0Registry banner信息: Initializing c3p0-0.9.1 [built 16-January-2007 14:46:42; debug? true; trace: 10]九月 25, 2017 10:32:43 上午 org.springframework.context.support.GenericApplicationContext refresh警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\Workspaces\MyEclipse 2017 CI\OneDay\target\classes\mapper\IdeaMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.guigu.dao.IdeaMapper.BaseResultMap九月 25, 2017 10:32:43 上午 org.springframework.test.context.TestContextManager prepareTestInstance严重: Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@2ed94a8b] to prepare test instance [com.guigu.test.MapperTest@72d6b3ba]java.lang.IllegalStateException: Failed to load ApplicationContext    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\Workspaces\MyEclipse 2017 CI\OneDay\target\classes\mapper\IdeaMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.guigu.dao.IdeaMapper.BaseResultMap    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:742)    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:128)    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:108)    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:251)    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)    ... 25 moreCaused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\Workspaces\MyEclipse 2017 CI\OneDay\target\classes\mapper\IdeaMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.guigu.dao.IdeaMapper.BaseResultMap    at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:523)    at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:380)    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)    ... 40 moreCaused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.guigu.dao.IdeaMapper.BaseResultMap    at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120)    at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92)    at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:521)    ... 43 moreCaused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.guigu.dao.IdeaMapper.BaseResultMap    at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:859)    at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:831)    at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:613)    at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:214)    at org.apache.ibatis.builder.ResultMapResolver.resolve(ResultMapResolver.java:47)    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:285)    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:252)    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:244)    at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116)    ... 45 more

1.applicationContext.xml路径不对

检查你的路径是否写对,文件位置是否正确

@ContextConfiguration(locations = "classpath:applicationContext.xml")

这里写图片描述

2.Mybatis逆向工程出现问题

1.想想自己是否逆向了两次导致生成mapper文件出现问题
详情查看这里
2.逆向时使用的xml文件是否书写正确
官方实例代码如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration>  <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />  <context id="DB2Tables" targetRuntime="MyBatis3">    <jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"        connectionURL="jdbc:db2:TEST"        userId="db2admin"        password="db2admin">    </jdbcConnection>    <javaTypeResolver >      <property name="forceBigDecimals" value="false" />    </javaTypeResolver>    <javaModelGenerator targetPackage="test.model" targetProject="\MBGTestProject\src">      <property name="enableSubPackages" value="true" />      <property name="trimStrings" value="true" />    </javaModelGenerator>    <sqlMapGenerator targetPackage="test.xml"  targetProject="\MBGTestProject\src">      <property name="enableSubPackages" value="true" />    </sqlMapGenerator>    <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="\MBGTestProject\src">      <property name="enableSubPackages" value="true" />    </javaClientGenerator>    <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >      <property name="useActualColumnNames" value="true"/>      <generatedKey column="ID" sqlStatement="DB2" identity="true" />      <columnOverride column="DATE_FIELD" property="startDate" />      <ignoreColumn column="FRED" />      <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />    </table>  </context></generatorConfiguration>

网站地址:http://www.mybatis.org/generator/configreference/xmlconfig.html

下面是一个可用的示例:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration>  <context id="DB2Tables" targetRuntime="MyBatis3">    <commentGenerator>      <property name="suppressAllComments" value="true" />    </commentGenerator>    <!-- 配置数据库链接信息 -->    <jdbcConnection         driverClass="com.mysql.jdbc.Driver"        connectionURL="jdbc:mysql://localhost:3306/oneday?useSSL=false"        userId="root"        password="wzB903328615@qq.com">    </jdbcConnection>    <javaTypeResolver >      <property name="forceBigDecimals" value="false" />    </javaTypeResolver>    <!--指定JavaBean的生成位置  -->    <javaModelGenerator      targetPackage="com.guigu.bean"      targetProject=".\src\main\java">      <property name="enableSubPackages" value="true" />      <property name="trimStrings" value="true" />    </javaModelGenerator>    <!--指定sql映射文件生成的位置  -->    <sqlMapGenerator      targetPackage="mapper"      targetProject=".\src\main\resources">      <property name="enableSubPackages" value="true" />    </sqlMapGenerator>    <!-- 指定dao接口生成的位置,mapper接口 -->    <javaClientGenerator       type="XMLMAPPER" targetPackage="com.guigu.dao"        targetProject=".\src\main\java">      <property name="enableSubPackages" value="true" />    </javaClientGenerator>    <!-- 指定每个表的生成策略 根据你的数据表的情况自行添加修改--><!--     <table tableName="tbl_emp" domainObjectName="Employee"> </table>    <table tableName="tbl_dept" domainObjectName="Department"></table> -->    <table tableName="user" domainObjectName="User"></table>    <table tableName="idea" domainObjectName="Idea"></table>    <table tableName="life" domainObjectName="Life"></table>    <table tableName="record" domainObjectName="Record"></table>  </context></generatorConfiguration>

3.Mybatis Generator导包问题(可能的问题)

这里我选择把原来导入的1.3.5换成了1.3.2。

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --><dependency>    <groupId>org.mybatis.generator</groupId>    <artifactId>mybatis-generator-core</artifactId>    <version>1.3.2</version></dependency>

快速构建一个可用的Maven工程

原创粉丝点击