[Spring Boot] 테스트 코드 중 import 오류 해결

HAM·2023년 2월 2일
0

Spring Boot Study

목록 보기
1/2
post-thumbnail

현재 Spring Boot 공부는 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'로 진행하고 있습니다 💪🏻

IntelliJ IDEA Community Edition 2022.3.2, JAVA 11 사용

책에서 p.61 - p.63 에 적힌 코드가 자꾸 오류가 뜨길래 찾아보았다.

main 부분은 잘 돌아갔는데 test하려고 코드를 그대로 쳤더니 6-7개의 오류가 떠서 하나하나 찾아보았다.

첫 번째

@RunWith(SpringRunner.class)

이 코드를 작성하면 자동으로 import가 위에 적혀야 되는데 안 적혀 있길래 혼자 따라서 적었더니 코드 라인에 색이 들어가지 않았다.
찾아보니 인텔리제이에서 업데이트를 해서 저 코드를 굳이 작성하지 않아도 되는 것 같다고 해서 과감하게 지웠더니 오류가 없어졌다.

처음 책을 읽고 하시는 분들은 코드를 위에서부터 다 칠 거 같아서 import 부분에서 없어도 될 부분을 적어보았다..💃🏼

import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringRunner;

두 번째

메인 코드를 작성하면서 자동으로 위에 import 되지 않은 부분을 더 적었다.

import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

분명 책이랑 똑같이 쳤는데 오류가 뜨길래 구글링하면서 똑같은 오류를 해결한 사람의 코드를 복붙했는데 해결했다!
무슨 차이가 있었는지 확인하려고 3번은 비교하면서 읽어봤는데.. 다른 점이 없는 것 같기도 하고..

해결


해결 완료!

최종코드

package com.jojoldu.book.springboot.web;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest(controllers = HelloController.class)

public class HelloControllerTest {

    @Autowired
    private MockMvc mvc;
    
    @Test
    public void hello가_리턴된다() throws Exception{
    
        String hello = "hello";

        mvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string(hello));
    }
}

참고


이렇게 색이 죽어서 뜨는 코드는 코드를 돌려볼 때 영향이 가지 않는 것 같다.
코드가 있든 없는 똑같은 결과가 뜬다.

profile
Frontend developer

0개의 댓글