当前使用版本(必须填写清楚,否则不予处理)
id 'org.springframework.boot' version '2.2.1.RELEASE'
compile "com.baomidou:mybatis-plus-boot-starter:3.2.0"
该问题是怎么引起的?(最新版上已修复的会直接close掉)
Use @SpyBean in any Sprint Boot Integergration test
add autoResultMap = true in annotation like
@TableName(value = "distributed_locks", autoResultMap = true)
重现步骤
Run ./gradlew test
A weird thing is that if you run the tests in Intellj, It works fine, but if you use gradle, it will crash
报错信息
Caused by: java.lang.IllegalArgumentException: org.apache.ibatis.builder.IncompleteElementException: Could not find result map 'com.example.demo.mappers.DistributedLockMapper.mybatis-plus_DistributedLockDO' referenced from 'com.example.demo.mappers.DistributedLockMapper.selectById'
at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:83)
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1799)
... 116 more
Caused by: org.apache.ibatis.builder.IncompleteElementException: Could not find result map 'com.example.demo.mappers.DistributedLockMapper.mybatis-plus_DistributedLockDO' referenced from 'com.example.demo.mappers.DistributedLockMapper.selectById'
at org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:341)
at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:285)
at com.baomidou.mybatisplus.core.injector.AbstractMethod.addMappedStatement(AbstractMethod.java:314)
at com.baomidou.mybatisplus.core.injector.AbstractMethod.addSelectMappedStatementForTable(AbstractMethod.java:253)
at com.baomidou.mybatisplus.core.injector.methods.SelectById.injectMappedStatement(SelectById.java:40)
at com.baomidou.mybatisplus.core.injector.AbstractMethod.inject(AbstractMethod.java:63)
at com.baomidou.mybatisplus.core.injector.AbstractSqlInjector.lambda$inspectInject$0(AbstractSqlInjector.java:55)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
at com.baomidou.mybatisplus.core.injector.AbstractSqlInjector.inspectInject(AbstractSqlInjector.java:55)
at com.baomidou.mybatisplus.core.MybatisMapperAnnotationBuilder.parse(MybatisMapperAnnotationBuilder.java:122)
at com.baomidou.mybatisplus.core.MybatisMapperRegistry.addMapper(MybatisMapperRegistry.java:82)
at com.baomidou.mybatisplus.core.MybatisConfiguration.addMapper(MybatisConfiguration.java:104)
at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:80)
... 119 more
Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for com.example.demo.mappers.DistributedLockMapper.mybatis-plus_DistributedLockDO
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:964)
at org.apache.ibatis.session.Configuration.getResultMap(Configuration.java:674)
at org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:339)
Comment From: FLXT-Qi
Update:
add attribute forkEvery into gradle config and won't fail, just wondering why
test {
forkEvery = 4
maxParallelForks = 32
environment "SPRING_PROFILES_ACTIVE", "test"
useJUnitPlatform()
}