안녕하세요, 자바 전사 여러분! ? 만약 당신이 여기 있다면, 이제 테스트 경로를 밟아 마케터가 약속한 것보다 당신의 코드가 더 잘 작동한다는 것을 증명할 시간입니다. 오늘은 H2 데이터베이스를 사용하여 Spring에서 로직을 테스트하는 방법에 대해 이야기하겠습니다. 갑시다! ?
상상해 보세요. 당신은 가장 멋진 서비스를 작성하고 있지만 비즈니스 로직이 환상의 세계에 살고 있는 것을 두려워합니다. 다음과 같은 이유로 실제 데이터베이스를 구동하는 테스트를 원하지 않습니다.
시작하기 전에 아늑한 테스트 작은 세계를 준비합시다. 이를 위해 src/test/resources/application.properties에 필요한 설정을 작성하겠습니다. 짜잔:
# Подключаем H2 spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password # Убедимся, что Hibernate всё за нас делает spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.datasource.url:은 테스트를 끄자마자 사라지는 "인메모리" 데이터베이스(mem:testdb)를 사용하려고 함을 나타냅니다.
DB_CLOSE_DELAY=-1: 데이터베이스는 JVM이 끝날 때까지 유지됩니다(장수 안정성!).
spring.jpa.hibernate.ddl-auto=create-drop: 테스트를 실행할 때 데이터베이스를 생성하고 나중에 삭제합니다. 청결이 성공의 열쇠입니다.
메이븐의 경우
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>
Gradle용
implementation 'com.h2database:h2'
이제 테스트를 작성해 보겠습니다. 우리는 주석의 마법이자 코드에 대한 약간의 사랑인 Spring을 켭니다.
User 엔터티가 있다고 가정해 보겠습니다.
# Подключаем H2 spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password # Убедимся, что Hibernate всё за нас делает spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
사용자 추가 테스트
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>
@SpringBootTest: Spring 컨텍스트 높이기(모든 것이 프로덕션 환경과 비슷하지만 안전함).
@Autowired: 우리는 그럴 자격이 있기 때문에 의존성을 주입합니다.
UserRepository: 저장소는 전투처럼 작동합니다.
이제 Spring, H2 및 테스트 간에 우정을 쌓는 방법을 알게 되었습니다. 이러한 예는 버그가 없고 테스트가 처음으로 작동하는 세상으로 가는 열쇠입니다. 잊지 마세요: 테스트가 코드를 더 좋게 만드는 것은 아니지만 숙면에 도움이 됩니다. 행운을 빌어요! ?
위 내용은 봄의 H 재미있는 테스트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!