/ / Spring Boot 2 M3 - MyBatis 1.3.0 - Тест - властивість 'sqlSessionFactory' або 'sqlSessionTemplate' обов'язкові - java, spring-boot, mybatis, spring-boot-test

Spring Boot 2 M3 - MyBatis 1.3.0 - Тест - Property 'sqlSessionFactory' або 'sqlSessionTemplate' обов'язкові - java, spring-boot, mybatis, spring-boot-test

Я маю на увазі наступну помилку лише тоді, колизапуск тестового класу. Це відбувається тільки з Spring Boot 2 (M3 на даний момент), в той час як "OK" з Spring Boot 1.5.3.

java.lang.IllegalArgumentException:
Property "sqlSessionFactory" or "sqlSessionTemplate" are required

Крім того, поки немає проблем при запуску зовнішнього Tomcat з JNDI пошуку: маппери і боби завантажуються добре.

build.gradle

compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:${myBatisBootVersion}")
compile("org.springframework.boot:spring-boot-starter-web") {
exclude module: "spring-boot-starter-tomcat"
}
compile("mysql:mysql-connector-java:6.0.6")
compile("org.springframework.boot:spring-boot-starter-log4j2:${springBootVersion}")

compileOnly("javax.servlet:javax.servlet-api:3.1.0")

testCompile("javax.servlet:javax.servlet-api:3.1.0")
testCompile("org.springframework.boot:spring-boot-starter-test")
testCompile("org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.0")

Application.java

@Configuration
@SpringBootApplication(exclude = JmxAutoConfiguration.class)
@MapperScan("eu.davidea.avocadoserver.persistence.mybatis.mappers")
public class Application extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}

public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}

}

застосування. властивості

spring.profiles.active=test

application-local.properties (вибрано під час місцевого розгортання)

spring.datasource.jndi-name="java:comp/env/jdbc/avocadoDB"

ApplicationTests.java

@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class ApplicationTests {

@Test
public void contextLoads() {
}

}

застосування-тест.попер (піднято під час запуску тестів)

spring.datasource.url=jdbc:mysql://...
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=...
spring.datasource.password=...

Що неправильно в цій конфігурації для перемикання на Spring Boot 2?

Проект буде доступний у Github якось скоро.

Відповіді:

0 для відповіді № 1

Я сам знайшов рішення:

Оскільки я використовував зовнішній Tomcat, я видалив з classpath пул конне Hikari, тому що не використовувався, але під час тестування JUnit відсутній пул підключення JDBC, тому я повернув його назад.