使用Spring單元測試出錯
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: [or[email protected]79698539, org.springframework.test [email protected]73f792cf, org.springframewor[email protected]2ed94a8b, org.springfra[email protected]38082d64, org.springframework.test.context.transaction[email protected], org.sp[email protected]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 [email protected]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.springframewor[email protected]2ed94a8b] to prepare test instance [[email protected]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 more
Caused 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 more
Caused 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 more
Caused 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>
下面是一個可用的示例:
<?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="[email protected]">
</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>
相關推薦
使用Spring單元測試出錯
bug如下: 九月 25, 2017 10:32:42 上午 org.springframework.test.context.support.DefaultTestContextBootstrapper getDefaultTestExecutionLi
spring單元測試的基本配置
code unit ext bsp 配置 con ner extc contex @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:trade.ap
SSM_CRUD新手練習(7)Spring單元測試分頁請求
好久沒寫這個系列部落格了是因為本人去公司實習去了,公司用的是Spring+SpingMvc+Hibernate現在有時間了不管怎麼樣繼續把這個專案寫完。 因為機器的原因,我的環境變成了IDEA+oracle+1.8+tomc
spring單元測試報錯:萬用字元的匹配很全面, 但無法找到元素 'tx:advice' 的宣告。
報錯:Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 54 in XML document from class path resource [app
spring單元測試集錦
參考資料 普通查詢效能測試 本測試目的在於摸清單純的資料庫查詢的效能以及併發數量。 測試程式碼為java程式碼呼叫儲存過程然後成功返回查詢資料 儲存過程: CREATE OR REPLACE FUNCTION "sp_common_region_getRe
【4】spring單元測試和ApplicationContext區別
ApplicationContext 等於直接呼叫 public ClassPathXmlApplicationContext(String[] configLocations, boolean re
Maven打war包提示單元測試出錯
SpringBoot專案呼叫了分散式服務,專案在打war包時提示找不到對應提供者的錯誤。通過排查發現打war包時會逐個驗證服務是否存在,但是打war包並不應該呼叫服務。 解決方案,修改pom檔案中的ma
Java後臺框架篇--Spring單元測試中的H2資料庫
H2資料庫是一種由Java編寫的,極小,速度極快,可嵌入式的資料庫。非常適合用在單元測試等資料不需要儲存的場景下面。 以下時其官網的介紹: {% blockquote h2 http://www.h2database.com/html/main.html h2 %}Wel
Spring單元測試類ApplicationTests錯誤
1)正確寫法 package com.boot.demo02restful; import org.junit.Assert; import org.junit.Before; import or
解決Spring單元測試ContextConfiguration註解不能使用
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.0.5.RELEASE</versi
Java的單元測試和整合spring單元測試
在我們編寫專案過程中,經常會需要進行程式碼測試,那是不是在編寫一個main方法之後,然後編寫各種的測試程式碼。這樣做,顯然是不合適的也是很不專業的。那怎麼辦呢?今天我們來聊下junit(單元測試)。 為了後期測試基於spring的單元測試,我們直接新建spri
Spring Boot的單元測試(Unit Test)
java spring boot unit test 最近做了一些Spring Boot單元測試方面的東西,總結一下。單元測試盡量要和Spring Boot框架減少耦合度,當你在測試某一項功能點是需要mock太多的對象時你就應該意識到這個功能點的耦合度太高了使用Constructor Inject
Spring MVC 單元測試異常 Caused by: org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file
read cti exe document ive pri simple fff ces Sping 3.2.8.RELEASE + sping mvc + JDK 1.8運行異常。 java.lang.IllegalStateException: Failed to
spring boot?Swagger2文檔構建及單元測試
int 5.6 n) post 參數 odin mat ace 關註 首先,回顧並詳細說明一下在快速入門中使用的@Controller、@RestController、@RequestMapping註解。如果您對Spring MVC不熟悉並且還沒有嘗試過快速入門案例,建議先
Spring整合activiti單元測試
context ons col unit test junit config har 配置 1 ** 2 * Spring測試activiti配置是否正常 3 * <p>Title: SpringActivitiTest</p>
spring-mybatis整合的dao單元測試
app iba 不一致 映射 xxx perm destroy 3.1 那種 在做spring-mybatis整合項目時對Dao所對應的 XXX.xml進行單元測試。整合時是spring和mybatis的整合,所以mybatis.xml文件就沒有了, 對應的配置
聊聊單元測試(三)——Spring Test+JUnit完美組合
進行 popu transacti csdn 基於 lease 2.4 獲取bean strong 本著“不寫單元測試的程序員不是好程序員”原則,我在堅持寫著單元測試,不敢說所有的Java web應用都基於Spring,但至少
如何編寫單元測試-基於Spring
要求 gem res 錯誤 xxd ssp aso util ... 單元測試 首先單元測試真的算是一種“臟活累活”,但是我個人感覺還是有必要,至少本人最近開始寫單元測試後還是能發現一些“bug”的。 如何寫單元測試 單元測試的要求...網上很多。下面來分享一下我是如何寫單
Spring-test單元測試
xtend manage 單元 true nconf ret trace ace oca package com.OnlineRetailers.service.base; import org.junit.runner.RunWith; import org.spri
Spring-test + Junit4單元測試
編碼 繼承 tco 試用 ont 操作 主鍵 app nbsp 一、僅使用Junit進行單元測試不足之處: 1、導致多次Spring容器初始化問題 —>根據JUnit測試方法的調用流程,每執行一個測試方法都會創建一個測試用例的實例並調用setUp()方法。由於一