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";
 }
 }
  • @RestControler 는 Contoller 의 방법 이 모두 JSON 형식 으로 출력 되 므 로 다른 추가 설정 이 필요 하지 않다 는 뜻 입 니 다.@Controller 로 설정 하면 출력 내용 을 페이지 로 표시 합 니 다
  • @RequestMapping("hello")은 경로 정 보 를 제공 하고"hello"경로 의 HTTP Request 는 hello()방법 에 매 핑 되 어 처 리 됩 니 다.
  • 3.메 인 프로그램 시작
    프로젝트 의 DemoAppicationrun 명령 을 오른쪽 클릭 하면 프로젝트 를 시작 할 수 있 습 니 다.다음 내용 이 나타 나 면 시작 성공 을 표시 합 니 다.

    시작 과정 에서 javaClassNotFoundException 이상 이 발생 하면 M aven 설정 이 올 바른 지 확인 하 십시오.구체 적 으로 다음 과 같 습 니 다.
  • Maven 의 settigs.xml 파일 이 올 바 르 게 도입 되 었 는 지 확인 합 니 다
  • IDE 도구 의 Maven 플러그 인 이 이 컴퓨터 의 Maven 주소 로 설정 되 어 있 는 지 확인 하 십시오.다음 그림
    Spring Boot 는 또 다른 두 가지 시작 항목 의 방식 을 제공 했다.
  • 프로젝트 경로 에서 명령 행 mvnspring-boot∶run 을 사용 하여 시작 합 니 다.그 효 과 는 위의'메 인 프로그램 시작'효과 와 일치 합 니 다
  • 4.567917.또는 프로젝트 를 포장 하고 포장 한 후에 Jar 가방 으로 시작 합 니 다
    
     #         
     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 사무 설정
  • 로 딩 프로필 의 읽 기 설정,주 해 를 엽 니 다
  • 로그 파일 설정
  • 설정 완료 후 Tomcat 디 버 깅 배치
  • Spring Boot 를 사용 한 후에 세 단계 만 있 으 면 웹 프로젝트 를 신속하게 구축 할 수 있 습 니 다
  • 페이지 설정 을 개발 도구 에 가 져 옵 니 다
  • 코드 작성
    운행
    비 교 를 통 해 Spring Boot 는 개발 단계 에서 대량의 최적화 를 하여 프로젝트 를 신속하게 구축 하기 쉽다 는 것 을 알 수 있다.
    이상 은 SpringBoot 프로젝트 의 생 성과 유닛 테스트 에 대한 상세 한 내용 입 니 다.SpringBoot 프로젝트 의 생 성과 유닛 테스트 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기