데이터베이스에 연결하는 응용 프로그램에 대한 테스트를 만들려고합니다. DataSource는 연결 풀 (히카리)입니다. 내가 처음이 개 테스트는 테스트 클래스를 실행하면 maximumPoolSize를이 2로 설정되어 있는지스프링 부트 및 연결 풀을 사용한 데이터베이스 테스트
가@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SqlTestConfig.class)
@Slf4j
@Sql(
scripts = "/clearTables.sql",
config = @SqlConfig(separator = "GO")
)
public class SqlTest {
@Autowired
DataSource dataSource;
@Test
public void test1() throws SQLException {
log.info("catalog:" + dataSource.getConnection().getCatalog());
}
@Test
public void test2() throws SQLException {
log.info("catalog:" + dataSource.getConnection().getCatalog());
}
@Test
public void test3() throws SQLException {
log.info("catalog:" + dataSource.getConnection().getCatalog());
}
@Test
public void test4() throws SQLException {
log.info("catalog:" + dataSource.getConnection().getCatalog());
}
}
공지 사항 : 여기
@Configuration
public class SqlTestConfig {
@Bean
DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(2);
config.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
config.setJdbcUrl("jdbc:sqlserver://serversql:1433;database=myDatabase");
config.setUsername("user");
config.setPassword("password");
return new HikariDataSource(config);
}
}
내 테스트 클래스입니다 : 여기
내 테스트 구성입니다 성공적으로 완료되고 풀에 연결이 끊어지기 때문에 나머지 테스트가 실패합니다 (연결 시간 초과).
@Sql 주석으로 인해 정리 스크립트를 실행하기 위해 DataSourceInitializer -s
이 만들어 지지만 연결이 풀로 반환되지 않기 때문에이 문제가 발생한다고 생각합니다.
MaximumPoolSize를 4로 설정하면 모든 테스트가 성공적으로 완료됩니다. 구성 오류가 발생했는지 또는 이것이 Spring의 버그인지 알 수 없습니다.
나는 오류가 발생했다고 완전히 말할 수 있습니다. 문제는 Spring Boot가 아닙니다. @After 메서드를 추가하여 각 테스트 후에 연결을 정리하고 풀로 복원해야합니다. – duffymo