보라코딩
스프링부트 테스트 본문
pom,xml
스프링부트 테스트 의존성 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
test 시에는 H2 데이터베이스 사용
(그밖에는 MariaDB 사용)
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
단위 테스트 만들기
CardatabaseApplicationTests
컨트롤러의 인스턴스가 정상적으로 생성되고 주입되었는지 확인하기 위한 코드
package com.packet.cardatabase;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.packet.cardatabase.web.CarController;
@SpringBootTest
class CardatabaseApplicationTests {
@Autowired
private CarController controller;
@Test
void contextLoads() {
assertThat(controller).isNotNull();
}
}
Run As -> JUnit test 선택
테스트 케이스 이름 지정하고 싶다면
@Test
@DisplayName("First example test case")
CRUD 작업 단위테스트
OwnerRepositoryTest
package com.packet.cardatabase;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Optional;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import com.packet.cardatabase.domain.Owner;
import com.packet.cardatabase.domain.OwnerRepository;
@DataJpaTest
public class OwnerRepositoryTest {
@Autowired
private OwnerRepository repository;
@Test // 새 owner 객체 생성하고 save로 저장 후 검색되는지 확인
void saveOwner() {
repository.save(new Owner("Lucy", "Smith"));
assertThat(repository.findByFirstname("Lucy").isPresent()).isTrue();
}
@Test // 소유자 삭제 기능 테스트
void deleteOwners() {
repository.save(new Owner("Lisa","Morrison"));
repository.deleteAll();
assertThat(repository.count()).isEqualTo(0);
}
}
JWT 인증 기능 테스트
CarRestTest
MockMVC 객체는 서버 시작되지 않지만 스프링이 HTTP 요청을 처리하는 계층에서 실제상황을 모의 테스트할 수 있다.
package com.packet.cardatabase;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.web.servlet.MockMvc;
@SpringBootTest
@AutoConfigureMockMvc
public class CarRestTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testAuthentication() throws Exception {
// 올바른 자격 증명으로 인증 테스트
this.mockMvc.
perform(post("/login").
content("{\"username\":\"admin\", \"password\":\"admin\"}").
header(HttpHeaders.CONTENT_TYPE, "application/json")).
andDo(print()).andExpect(status().isOk());
}
}
'코딩 > Spring' 카테고리의 다른 글
Spring Boot JPA CRUD 정리 (0) | 2023.08.08 |
---|---|
Spring Boot 와 React.js 연동하기! (0) | 2023.08.05 |
JWT로 백엔드 인증 구현하기 (0) | 2023.07.25 |
스프링부트로 RESTful 웹 서비스 만들기 (0) | 2023.07.24 |
JPA를 이용한 데이터베이스 생성 및 접근 (0) | 2023.07.23 |