1. 程式人生 > >使用Spring單元測試出錯

使用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()方法。由於一