Я использую Java11.0.3 и springboot 2.0.5. Я пытаюсь написать интеграционный тест для моего приложения, которое соединяется с postgresql. Поэтому я использую NamedParameterJdbcTemplate.
Когда я пытаюсь запустить свой интеграционный тест. (mvn clean verify -P интеграционный тест)
Это дает
java.lang.NoClassDefFoundError: java/sql/SQLException
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<clinit>(SpringJUnit4ClassRunner.java:107)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
Это мой тестовый класс
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = ContentAggregatorApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource("/application.properties")
public class ContentAggregatorApplicationIT {
@LocalServerPort
private int port;
TestRestTemplate restTemplate = new TestRestTemplate();
HttpHeaders headers = new HttpHeaders();
@Test
public void getESGValues() throws Exception{
HttpEntity<String> entity = new HttpEntity<>(String, headers);
ResponseEntity<String> exchange = restTemplate
.exchange(createURLWithPort("v1/data/valueRequest"), HttpMethod.POST, entity,
String.class);
assertEquals(HttpStatus.OK,exchange.getStatusCode());
}
private String createURLWithPort(String uri) {
return "http://localhost:" + port + uri;
}
}
Это мой конфигурационный файл
public class PostgresConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public HikariDataSource dataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean public NamedParameterJdbcTemplate jdbcTemplate(DataSource dataSource) {
NamedParameterJdbcTemplate namedParameterJdbcTemplate =
new NamedParameterJdbcTemplate(dataSource);
return namedParameterJdbcTemplate;
}
У меня есть эта зависимость
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>