You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
when run app is ok, but when run unittest will failed:
Caused by: java.io.FileNotFoundException: class path resource
[file:/Users/xx/.../target/classes/mybatis/mapper/userMapper.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:199)
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:609)
... 164 more
Because mapperLocations is full file path, the resource can be FileSystemResource can not be ClassPathResource!
When in the test project ,mapper files are in test resources,so the full file path can remove the baseUrl,but commons mapper files are in src/main/resource path, so in the method: org.mybatis.spring.nativex.MyBatisScannedResourcesHolder.Registrar#toPath, url.startsWith(baseUrl) is false.
Maybe can change code like this, just change code in org.mybatis.spring.nativex.MyBatisScannedResourcesHolder.Registrar#toPath, the url index "target/test-classes" or "target/classes", remove the prefix.
private static final String TEST_CLASSPATH= "target/test-classes/";
private static final String CLASSPATH= "target/classes/";
private String toPath(Resource resource, String baseUrl) {
try {
String url = resource.getURL().toString();
String path = url;
int indexTestClassPath = url.indexOf(TEST_CLASSPATH);
int indexClassPath = url.indexOf(CLASSPATH);
if (url.startsWith(baseUrl)) {
path = url.replace(baseUrl, "");
} else if (indexTestClassPath > 0) {
path = url.substring(indexTestClassPath+TEST_CLASSPATH.length());
} else if (indexClassPath > 0) {
path = url.substring(indexClassPath+CLASSPATH.length());
...
The text was updated successfully, but these errors were encountered:
when run app is ok, but when run unittest will failed:
In class MyBatisSpringNativeAutoConfiguration
Because mapperLocations is full file path, the resource can be FileSystemResource can not be ClassPathResource!
When in the test project ,mapper files are in test resources,so the full file path can remove the baseUrl,but commons mapper files are in src/main/resource path, so in the method: org.mybatis.spring.nativex.MyBatisScannedResourcesHolder.Registrar#toPath, url.startsWith(baseUrl) is false.
Maybe can change code like this, just change code in org.mybatis.spring.nativex.MyBatisScannedResourcesHolder.Registrar#toPath, the url index "target/test-classes" or "target/classes", remove the prefix.
The text was updated successfully, but these errors were encountered: