项目正常单元测试错误 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value


使用Junit单元测试时发现问题,项目能正常运行,但是单元测试一直报错如下

java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.ss.tmall.mapper.PropertyMapper.selectByPrimaryKey

求助度娘查找

1.namespace写错,或者各种检查配置文件

2.jdk降级1.8降级1.7

3.spring升级4.2,junit升级

如上三种方法都没有解决这个问题

后来怀疑是 ,如下这个配置作祟,

<property name="mapperLocations" value="classpath:mapper/*.xml"/>

为什么呢?是java下的mapper包和resource下的mapper包重名,会默认扫描java下的mapper包。目录结构如下,那将resource路径下的mapper包改为imapper,同时修改spring-Mybatis配置文件 appliciationContext.xml 为imapper

项目正常单元测试错误 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value项目正常单元测试错误 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value项目正常单元测试错误 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value

再次执行propertymapper 单元测试,成功

项目正常单元测试错误 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value