SpringBoot 프로젝트 의 생 성과 유닛 테스트 에 대한 자세 한 설명
10859 단어 SpringBoot프로젝트 생 성유닛 테스트
Spring Boot 디자인 은 초기 에 최소한 의 설정 으로 가장 빠 른 속도 로 Spring 프로젝트 를 시작 하고 실행 하기 위해 서 였 다.Spring Boot 는 특정한 설정 을 사용 하여 생산 준비 형 프로젝트 를 구축 합 니 다.
Hello World
1.Spring Initializr 에 추가 할 수도 있 고 pom.xml 에 다음 코드 를 수 동 으로 추가 할 수도 있 습 니 다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>Spring-boot-starter-web</artifactId>
</dependency>
pom.xml 파일 에 기본 모듈 이 있 습 니 다:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
4.567914.의존 하 는 구성 요 소 는 테스트 와 관련 된 작업 에 만 참여 하고 테스트 코드 의 컴 파일 과 실행 을 포함 하 며 포장 되 지 않 습 니 다.spring-boot-starter-test 는 Spring Boot 가 프로젝트 테스트 를 제공 하 는 공구 꾸러미 로 여러 가지 테스트 도 구 를 내장 하여 프로젝트 에서 유닛 테스트,통합 테스트 를 할 수 있 도록 합 니 다.2.컨트롤 러 내용 작성
디 렉 터 리 src\main\java\다음 에 새 가방 을 만 듭 니 다
<scope>test</scope>
그리고 이 가방 아래 에 HelloController 를 만 듭 니 다.@RestControler 는 Contoller 의 방법 이 JSON 형식 으로 출력 되 므 로 다른 추가 설정 이 필요 하지 않다 는 뜻 입 니 다.@Controller 로 설정 하면 출력 내용 을 페이지 로 표시 합 니 다.
@RequestMapping("hello")은 경로 정 보 를 제공 합 니 다."hello"경로 의 HTTP Request 는 hello()방법 에 매 핑 됩 니 다.
주 프로그램 시작
프로젝트 의 DemoAppicationrun 명령 을 오른쪽 클릭 하면 프로젝트 를 시작 할 수 있 습 니 다.다음 내용 이 나타 나 면 시작 성공 을 표시 합 니 다.
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello world";
}
}
프로젝트 의 DemoAppicationrun 명령 을 오른쪽 클릭 하면 프로젝트 를 시작 할 수 있 습 니 다.다음 내용 이 나타 나 면 시작 성공 을 표시 합 니 다.
시작 과정 에서 javaClassNotFoundException 이상 이 발생 하면 M aven 설정 이 올 바른 지 확인 하 십시오.구체 적 으로 다음 과 같 습 니 다.
Spring Boot 는 또 다른 두 가지 시작 항목 의 방식 을 제공 했다.
#
cd ../demo
#
mvn clean package
# Jar
java -jar target/hello-0.0.1-SNAPSHOT.jar
시작 성공 후 브 라 우 저 를 열 어 웹 주 소 를 입력 하 십시오:http:/localhost:8080/hello,다음 내용 을 볼 수 있 습 니 다:개발 단 계 는 개발 과정 에서 디 버 깅 하기 편리 하도록 첫 번 째 방식 으로 시작 하 는 것 을 권장 합 니 다.
4.만약 우리 가 인 자 를 입력 하고 싶다 면 어떻게 합 니까?
요청 전 삼 은 일반적으로 URL 주소 전 삼 과 폼 전 삼 두 가지 방식 으로 나 뉘 는데 이들 은 각각 장단 점 이 있 지만 기본적으로 키 값 이 맞 는 방식 으로 파 라 메 터 를 백 엔 드 에 전달 합 니 다.백 엔 드 프로그램 으로서 전단 에서 사용 하 는 방식 에 관심 을 가지 지 않 고 매개 변수의 키 에 따라 값 을 얻 을 수 있 습 니 다.Spring 은 여러 가지 매개 변수 수신 방식 을 제공 합 니 다.본 장 에서 우 리 는 가장 간단 한 방식 인 URL 을 통 해 전 참 됩 니 다.백 엔 드 에서 요청 을 처리 하 는 방법 에 매개 변수 키 와 같은 이름 의 속성 이 존재 한다 면 요청 하 는 과정 에서 Spring 은 자동 으로 매개 변수 값 을 속성 에 할당 하고 마지막 으로 방법 에서 직접 사용 하면 됩 니 다.다음은 hello()를 예 로 들 어 보 여 드 리 겠 습 니 다.
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(String name) {
System.out.println("name..." + name);
return "hello world, " + name;
}
}
항목 을 다시 시작 하고 브 라 우 저 를 열 어 웹 주 소 를 입력 합 니 다 http:/localhost 8080/hello?name=reminis.다음 내용 을 되 돌려 줍 니 다.여기까지 우리 의 첫 번 째 Spring Boot 프로젝트 가 개발 되 었 습 니 다.간단 하 다 고 생각 하 십 니까?테스트 를 통 해 Controller 내 관련 코드 를 수정 하려 면 프로젝트 를 다시 시작 해 야 효력 이 발생 하 는 것 으로 밝 혀 졌 습 니 다.이렇게 하 는 것 은 매우 번 거 롭 지 않 습 니까?조급해 하지 마 세 요.Spring Boot 는 또 다른 구성 요 소 를 제공 하여 해결 합 니 다.
열 배치
열 시동 은 하나의 구성 요소∶spring-boot-devtools 를 사용 해 야 합 니 다.이것 은 Spring Boot 가 제공 하 는 개발 도구 패키지 입 니 다.그 중에서 우리 가 필요 로 하 는 열 배치 기능 을 포함 하고 이 기능 을 사용 하기 전에 설정 을 좀 더 해 야 합 니 다.
의존 도 를 높이다
pom.xml 파일 에 spring-boot-devtools 구성 요 소 를 추가 합 니 다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
plugin 에 다른 속성 fork 를 설정 하고 true 로 설정 합 니 다.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
OK,이상 의 설정 이 완료 되 었 습 니 다.Eclipse 통합 개발 환경 을 사용 하고 있다 면 큰 성 과 를 거 둔 것 을 축하합니다.IDEA 통합 개발 환경 을 사용한다 면 다음 설정 이 필요 합 니 다.IDEA 설정File-settings-Compiler 명령 을 선택 한 다음 Build procject automati cally 체크 상 자 를 선택 하 십시오.낮은 버 전의 IDEA 는 make procject 자동 체크 상 자 를 선택 하 십시오.
단축 키 Ctrl+Shift+A 를 사용 하여 입력 상자 에 Registry 를 입력 하고 체크 상 자 를 선택 하 십시오:
모든 설정 이 완료 되면 IDEA 는 열 배 치 를 지원 합 니 다.코드 를 변경 해 보 세 요.5 초 를 기다 리 면 Spring Boot 가 자동 으로 다시 불 러 옵 니 다.더 이상 수 동 으로 누 르 지 않 아 도 다시 시작 할 수 있 습 니 다.
왜 IDEA 는 뒤에 있 는 이 단 계 를 더 설정 해 야 합 니까?IDEA 는 기본적으로 자동 으로 컴 파일 되 지 않 기 때문에 수 동 으로 설정 해 야 자동 으로 컴 파일 되 고 열 배 치 는 프로젝트 의 자동 컴 파일 기능 에 의존 합 니 다.
이 모듈 은 완전한 포장 환경 에서 실 행 될 때 사용 하지 않 습 니 다.자바-jar 를 사용 하여 프로그램 을 시작 하거나 특정한 classloader 로 시작 하면'생산 환경'이 라 고 생각 합 니 다.
유닛 테스트
『8195』단원 테스트 는 우리 일상 개발 에서 없어 서 는 안 되 고 우수한 프로그래머 이 며 단원 테스트 개발 도 매우 완선 합 니 다.다음은 Spring Boot 가 유닛 테스트 에 어떤 지원 을 했 는 지 살 펴 보 겠 습 니 다.
만약 우리 가 hello World 만 실행 하고 싶다 면@Test 주석 하나만 있 으 면 됩 니 다.src/test 디 렉 터 리 에 HelloTest 클래스 를 새로 만 듭 니 다.코드 는 다음 과 같 습 니 다.
public class HelloTest {
@Test
private void hello() {
System.out.println("hello world");
}
}
오른쪽 단 추 를 누 르 면"실행"단 추 를 누 르 면 콘 솔 이 출력∶hello World 를 발견 합 니 다.웹 층 테스트 요청 이 필요 하 다 면?스프링 부 트 도 지원 했다.이전 에는 웹 요청 을 테스트 할 때 관련 매개 변 수 를 수 동 으로 입력 하여 페이지 에서 효 과 를 테스트 하거나 post 요청 을 직접 작성 해 야 했 습 니 다.Spring Boot 시스템 에서 Spring 은 MockMVC 를 사용 하여 웹 테스트 를 진행 하 는 간단 한 솔 루 션 을 제 시 했 고,MockMVC 에는 post,get 요청 을 모 의 하고 되 돌아 오 는 결과 가 정확 한 지 판단 할 수 있 는 도구 류 와 방법 이 많이 내장 되 어 있 으 며,print()를 이용 하여 실행 결 과 를 인쇄 할 수도 있다.
@SpringBootTest(classes = DemoApplication.class)
class DemoApplicationTests {
private MockMvc mockMvc;
@BeforeEach
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}
@Test
public void getHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders
.post("/hello?name=reminis")
.accept(MediaType.APPLICATION_JSON))
.andDo(MockMvcResultHandlers.print());
}
}
@Beforeech 주해 방법 은 테스트 가 시 작 될 때 우선 실행 되 며,일반적으로 자원 초기 화 에 사 용 됩 니 다.제 SpringBoot 프로젝트 버 전 은 2.4.3 이기 때문에 Junit 5,JUnit 5 를 통합 한 환경 에서@Beforeech 와@AfterEach 는@Before 와@After 주 해 를 대체 합 니 다.Junit 4 는@Before 와@After 주 해 를 사용 합 니 다.클래스 에@SpringBootTest 를 추가 하면 시스템 은 자동 으로 Spring Boot 용 기 를 불 러 옵 니 다.일상적인 테스트 에서 bean 을 주입 하여 국부 적 인 업무 테스트 를 할 수 있다.MockMvcRequestBuilders 는 post,get 요청 을 지원 할 수 있 습 니 다.MockMvcResultHandlers.print()방법 을 사용 하면 요청 과 해당 하 는 과정 을 모두 인쇄 할 수 있 습 니 다.구체 적 으로 다음 과 같 습 니 다.
MockHttpServletRequest:
HTTP Method = POST
Request URI = /hello
Parameters = {name=[reminis]}
Headers = [Accept:"application/json"]
Body = <no character encoding set>
Session Attrs = {}
Handler:
Type = com.reminis.demo.controller.HelloController
Method = com.reminis.demo.controller.HelloController#hello(String)
Async:
Async started = false
Async result = null
Resolved Exception:
Type = null
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 200
Error message = null
Headers = [Content-Type:"application/json", Content-Length:"20"]
Content type = application/json
Body = hello world, reminis
Forwarded URL = null
Redirected URL = null
Cookies = []
Type = null
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 200
Error message = null
Headers = [Content-Type:"application/json", Content-Length:"20"]
Content type = application/json
Body = hello world, reminis
Forwarded URL = null
Redirected URL = null
Cookies = []
돌아 온 바디=헬 로 월 드,리 미 니스 는 요청 이 성공 했다 는 것 을 알 수 있다.물론 요청 할 때마다 이렇게 많은 반환 결 과 를 보고 식별 이 쉽 지 않 기 때문에 MockMVC 는 반환 결 과 를 판단 하 는 더 많은 방법 을 제공 하 는데 그 중에서 반환 값 을 판단 하 는 것 이 있다.우 리 는 위의 getHello()방법 을 약간 개조 할 것 이다.구체 적 으로 다음 과 같다.
@Test
public void getHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders
.post("/hello?name=reminis")
.accept(MediaType.APPLICATION_JSON))
/*.andDo(MockMvcResultHandlers.print())*/
.andExpect(MockMvcResultMatchers.content(). string(Matchers.containsString("reminis")));
}
MockMvcResultMatchers.content()이 코드 는 Wceb 요청 이 실 행 된 결 과 를 얻 었 다 는 뜻 입 니 다.Matchers.contansString("reminis")은 되 돌아 오 는 결과 에"reminis"라 는 문자열 이 포함 되 어 있 는 지 판단 합 니 다.스프링 부츠 를 사용 하기 전과 사용 후 간단하게 비교 해 보 겠 습 니 다.Spring 부팅 사용 전:
웹.xml 설정,Spring 과 Spring MVC 불 러 오기데이터베이스 연결 설정,Spring 사무 설정
운행
비 교 를 통 해 Spring Boot 는 개발 단계 에서 대량의 최적화 를 하여 프로젝트 를 신속하게 구축 하기 쉽다 는 것 을 알 수 있다.
이상 은 SpringBoot 프로젝트 의 생 성과 유닛 테스트 에 대한 상세 한 내용 입 니 다.SpringBoot 프로젝트 의 생 성과 유닛 테스트 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.