Eu estou encontrando o seguinte erro somente quandoexecutando a classe de teste. Isso ocorre apenas com o Spring Boot 2 (M3 por enquanto), enquanto "OK está com o Spring Boot 1.5.3. O MyBatis 1.3.1-SNAPSHOT não parece disponível / publicado, então eu uso o 1.3.0.
java.lang.IllegalArgumentException:
Property "sqlSessionFactory" or "sqlSessionTemplate" are required
Além disso, nenhum problema até o momento ao lançar o Tomcat externo com a pesquisa JNDI: mappers e beans são carregados bem.
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);
}
}
application.properties
spring.profiles.active=test
application-local.properties (pegou na implantação local)
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() {
}
}
application-test.poperties (pegou quando lançando testes)
spring.datasource.url=jdbc:mysql://...
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=...
spring.datasource.password=...
O que há de errado nesta configuração para quando alternar para o Spring Boot 2?
O projeto estará disponível no Github em breve.
Respostas:
0 para resposta № 1Eu mesmo encontrei uma solução:
Como eu estava usando o Tomcat externo, eu removi do caminho de classe o pool de conexões do Hikari porque não era usado, mas durante a fase de teste do JUnit estava faltando um conjunto de conexões JDBC, então coloquei de volta.