>Java >java지도 시간 >봄의 H 재미있는 테스트

봄의 H 재미있는 테스트

Patricia Arquette
Patricia Arquette원래의
2024-11-26 15:39:13314검색

H весёлые тесты в Spring

안녕하세요, 자바 전사 여러분! ? 만약 당신이 여기 있다면, 이제 테스트 경로를 밟아 마케터가 약속한 것보다 당신의 코드가 더 잘 작동한다는 것을 증명할 시간입니다. 오늘은 H2 데이터베이스를 사용하여 Spring에서 로직을 테스트하는 방법에 대해 이야기하겠습니다. 갑시다! ?

왜 H2가 필요한가요?

상상해 보세요. 당신은 가장 멋진 서비스를 작성하고 있지만 비즈니스 로직이 환상의 세계에 살고 있는 것을 두려워합니다. 다음과 같은 이유로 실제 데이터베이스를 구동하는 테스트를 원하지 않습니다.

  1. 느립니다.
  2. 위험합니다(실수로 무언가를 삭제한다고요? 우리는 그렇지 않습니다!).
  3. 이것은 너무 현실적이며 H2는 모든 것이 통제되는 우리의 매트릭스입니다. H2는 당신의 친구 코드입니다:
  • 경량.
  • 내장.
  • 테스트에 적합합니다.

application.properties 설정: H2가 자동으로 작업하도록 합니다.

시작하기 전에 아늑한 테스트 작은 세계를 준비합시다. 이를 위해 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.