![](/img/trans.png)
[英]Spring Boot 2.0.4 + Thymeleaf 3.0.9: Could not initialize class HTMLTemplateParser
[英]Spring Boot Database initialization failed: SimpleDriverDataSource could not initialize class
我正在嘗試使用 Spring 啟動上下文運行測試,但出現錯誤“無法初始化 class org.springframework.jdbc.datasource.SimpleDriverDataSource ”
我在這個問題上苦苦掙扎了幾天,無法讓它工作。 可能我對 Spring 啟動測試不夠熟悉,但是在 Spring 啟動版本 2.3.4 上一切正常。 升級到 2.5.7 及更高版本后,(2.6.1)問題仍然存在。
測試 class:
@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2)
@ContextConfiguration(classes = TestApplication.class)
@SpringBootTest(properties = {
"spring.sql.init.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE",
"spring.sql.init.driver-class-name=org.h2.Driver",
"spring.sql.init.username=user",
"spring.sql.init.password=pass",
"spring.jpa.hibernate.ddl-auto=update",
"spring.jpa.show-sql=true"
}
)
public class UserServiceTest {
private static final String USERNAME_COLUMN = "username";
@Autowired
private RoleRepository roleRepository;
@Autowired
private UserRepository userRepository;
@Autowired
private UserService userService;
@BeforeEach
@AfterEach
public void cleanDatabase() {
userRepository.deleteAll();
roleRepository.deleteAll();
}
@Test
@Transactional
public void shouldRegisterUser() {
roleRepository.saveAndFlush(RoleFixture.createRoleEntity(UserType.USER.name()));
final String username = "username";
final UserType type = UserType.USER;
final UserRegister userRegister = UserFixture.createUserRegister(
username,
"password",
"email@test.com",
25,
"name",
"last_name",
type
);
final UserResponse userResponse = userService.registerUser(userRegister);
assertThat(userResponse).isNotNull();
assertThat(userResponse.getUserId()).isNotNull();
assertThat(userResponse.getUsername()).isEqualTo(username);
assertThat(userResponse.getType()).isEqualTo(type);
assertThat(userRepository.findByUserId(userResponse.getUserId())).isNotEmpty();
}
上下文初始化器 class:
package hr.fitbit.demo.fitbitconnect.testsupport;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages = "hr.fitbit.demo.fitbitconnect")
public class TestApplication {
}
Maven 依賴關系:
<!-- spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
我試圖包含 spring-boot-data-jpa、h2、spring-boot-jdbc 依賴項,但沒有任何幫助。 這是項目https://github.com/filip194/fitbit-connect的鏈接和測試鏈接: https://github.com/filip194/fitbit-connect/blob/master/subprojects/users/src/測試/java/hr/fitbit/demo/fitbitconnect/users/service/UserServiceTest.java 。
我也嘗試刪除@AutoConfigureTestDatabase但后來又出現另一個錯誤:無法初始化 class com.zaxxer.hikari.HikariDataSource ,即使我在 pom 中明確包含依賴項,我也找不到解決方案。
我目前對此感到困惑,無法繼續我的教育項目。 任何幫助,將不勝感激。 謝謝!
編輯 1:使用spring.datasource。 或spring.sql.init。 在這兩種情況下,屬性都不會更改測試結果或錯誤消息。
我建議你做出以下決定:
@EnableJpaRepositories
和@EntityScan
@EnableJpaRepositories(basePackageClasses = {UserRepository.class, RoleRepository.class})
//@EnableJpaRepositories(basePackages = "hr.fitbit.demo.fitbitconnect.dao.repository")
@EntityScan(basePackageClasses = {UserEntity.class, RoleEntity.class})
@SpringBootTest(classes = TestApplication.class)
public class UserServiceTest {
dao
中添加到文件夾dao/src/test/java
class 與@SpringBootApplicatio
n package hr.fitbit.demo.fitbitconnect.dao;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MockTestApplication {
}
和
@DataJpaTest
public class RoleEntityTest {
更多信息在這里https://www.baeldung.com/spring-boot-unable-to-find-springbootconfiguration-with-datajpatest
@EnableJpaRepositories
和@EntityScan
添加到 TestSupport class 和 FitbitServiceTest class。祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.