我正在使用Spring Boot開發Web應用程序,現在我正在嘗試爲DAO圖層創建測試,並且我想使用不同的配置,它將讀取自定義屬性文件的標準之一。但Iam遇到問題,它總是讀取默認應用程序。和hibernate.properties。
想要這樣做,以便具有不同的hibernate.ddl-auto屬性進行測試。但是當我運行測試時,我看到Spring從屬於資源文件夾的hibernate.properties中讀取屬性(我故意在該文件中創建一個錯字,以便在Spring讀取時獲取異常)。但是,即使當我使用@TestPropertySource
時,爲什麼它會讀取該文件?
我看到有些東西我不知道,但是什麼? 包的src /測試/ JAVA/com.guard/DAO使用單獨的application.properties創建Spring Boot測試
@RunWith(SpringRunner.class)
@DataJpaTest
@Rollback
public class LifeguardDaoTest {
@Autowired
private LifeguardDao lgDao;
@Test
public void selectTest(){
for (Lifeguard lg :lgDao.getAll()) {
System.out.println(lg);
}
}
}`
測試配置類是設置上下文 包的src /測試/ JAVA/com.guard
@SpringBootApplication
@EntityScan(value = {"com.guard.dao","com.guard.model"})
@TestPropertySource(value = {"classpath:application-test.properties", "classpath:hibernate-test.properties"})
public class TestConfiguration {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(TestConfiguration.class, args);
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
System.out.println("Spring boot test generated " + beanNames.length + " beans");
}
}
所需應用程序測試。性能和hibernate-test.properties是SRC /測試/ java的路徑
下面是項目結構上(不`噸知道如何在這裏設計了,不好意思)
|src
|--main
|----java
|------com.guard
|----------configuration
|-------------GuardApplication.class (@SpringBootApplication,requires default props)
|--test
|----java
|------application-test.properties
|-------hibernate-test.properties
|-----com.guard
|-------TestConfiguration.class
|-------dao
|---------LifeguardDaoTest.class
個
我application-test.properties `
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.HSQLDialect
spring.jpa.hibernate.show_sql=false
spring.jpa.hibernate.format_sql=true
spring.jpa.hibernate.hbm2ddl-auto=create
# even in case if it won`t use "spring.jpa" prefix
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.show_sql=true
hibernate.format_sql=true
`