ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • springwebmvcproject
    SPRING 2022. 2. 4. 00:41

    연휴 전에 BoardVO까지 작성했었어요!

     

    mapper에 sql문을 작성합니다.

    <mapper namespace="com.spring.mvc.board.repository.IBoardMapper">
    <resultMap type="com.spring.mvc.board.model.BoardVO" id="BoardMap">
    <id property="boardNo" column="board_no" />
    <result property="regDate" column="reg_date" />
    <result property="viewCnt" column="view_cnt" />
    </resultMap>
     
    <insert id="insert">
    INSERT INTO mvc_board
    (board_no, title, content, writer)
    VALUES(board_Seq.NEXTVAL, #{title}, #{content}, #{writer})
    </insert>
     
    <select id="getArticleList" resultMap="BoardMap">
    SELECT * FROM mvc_board
    ORDER BY board_no DESC
    </select>
     
    <select id="getArticle" resultMap="BoardMap">
    SELECT * FROM mvc_board
    WHERE board_no=#{boardNo}
    </select>
     
    <update id="update">
    UPDATE mvc_board
    SET title=#{title},
    content=#{content}
    WHERE board_no=#{boardNo}
    </update>
     
    <delete id="delete">

     

    UPDATE mvc_board
    WHERE board_no=#{boardNo}
    </delete>
    </mapper>

     

     

    test로 돌리기 위해서 maven spring에서 알맞은 프로그램을 가지고 왔고,

    src/test/java에 패키지를 만들어서 컨트롤러와 맵퍼를 만들어 줍니다.

     

    설명:

    WebApplicationContext: Spring에서 제공되는 servlet들을 사용할 수 있도록 정보를 저장하는 객체입니다.

    MockMvc: 웹 어플리케이션을 서버에 배포하지 않아도 스프링 MVC 동작을 구현할 수 있는 가상의 구조를 만들어 줍니다.

     

    일단 BoardController부터

     

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/spring/servlet-config.xml",
    "file:src/main/webapp/WEB-INF/spring/mvc-config.xml"})
    @WebAppConfiguration
    @Log4j
    public class BoardControllerTest {
     
    @Autowired
    private WebApplicationContext ctx;
     
    @Autowired
    private BoardController controller;
     
    private MockMvc mockMvc;
    @Before
    public void setUp() {
    //가상 구조를 세팅
    //스프링 컨테이너에 등록된 모든 빈과 의존성 주입까지 로드해서 사용이 가능
    this.mockMvc = MockMvcBuilders.webAppContextSetup(ctx).build();
    }
     
    @Test
    public void testList() throws Exception {
    log.info(
    mockMvc.perform(MockMvcRequestBuilders.get("/board/list"))
    .andReturn()
    .getModelAndView()
    .getModelMap()
    );
    }
     
    @Test
    public void testInsert() throws Exception {
    String viewPage = mockMvc.perform(MockMvcRequestBuilders.post("/board/write")
    .param("title", "테스트 새 글 제목")
    .param("content", "테스트 새 글 내용")
    .param("writer","user01")
    ).andReturn().getModelAndView().getViewName();
    }
     
    @Test
    public void testContent() throws Exception {
    log.info(mockMvc.perform(MockMvcRequestBuilders.post("/board/content")
    .param("boardNo", "42")
    ).andReturn().getModelAndView().getModelMap()
    );
    }
     
    @Test
    public void testModify() throws Exception {
    String viewName = mockMvc.perform(MockMvcRequestBuilders.post("/board/content")
    .param("title", "테스트 글 제목 수정2")
    .param("content", "테스트 글 내용 수정2")
    .param("writer", "5")
    ).andReturn().getModelAndView().getViewName();
    log.info(viewName);
    }
     
    @Test
    public void testDelete() throws Exception {
    log.info(
    mockMvc.perform(MockMvcRequestBuilders.post("/board/delete")
    .param("boardNo", "42")
    ).andReturn().getModelAndView().getViewName()
    );
    }
    }
     
    BoardMapperTest를 작성합니다.
    실제로는 왔다리갔다리 하면서 작성합니다!
     
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/spring/mvc-config.xml"})
    public class BoardMapperTest {
    private IBoardMapper mapper;

     

    //게시글 등록 단위 테스트
    @Test
    public void insertTest() {
    for(int i=1; i<=300; i++) {
    BoardVO article = new BoardVO();
    article.setTitle("테스트 제목입니다." + i);
    article.setWriter("김테스트: " + i);
    article.setContent("테스트중~~: " + i);
    mapper.insert(article);
    }
    }
     
    //게시글 목록 전체 조회 테스트
    @Test
    public void getListTest() {
    List<BoardVO> list = mapper.getArticleList();
    for(BoardVO vo : list) {
    System.out.println(vo);
    }
    }
     
    //게시글 단일 조회 테스트
    @Test
    public void getArticleTest() {
    BoardVO vo = mapper.getArticle(44);
    System.out.println(vo);
    }
     
    //게시글 수정 테스트
    @Test
    public void updateTest() {
    BoardVO vo = new BoardVO();
    vo.setBoardNo(1);
    vo.setTitle("수정된 제목");
    vo.setContent("수정");
    mapper.update(vo);
    System.out.println("수정 후 정보: " + mapper.getArticle(1));
    }
     
    //게시글 삭제 테스트
    @Test
    public void deleteTest() {
    mapper.delete(3);
    if(mapper.getArticle(3) == null) {
    System.out.println("삭제 성공!");
    }else {
    System.out.println("삭제 실패!");
    }
    }
    }

     

    <!-- 정적 자원(html, css, js, img...) 등을 URI 절대 경로로 사용하기 위한 맵핑 처리 -->
    <!-- mapping: 사용자에게 노출되는 경로, location: 실제 파일의 경로 -->
    <resources mapping="/resources/**" location="/resources/" />
    <resources mapping="/css/**" location="/resources/css/" />

    'SPRING' 카테고리의 다른 글

    mywebproject  (0) 2022.02.11
    springwebmvcproject  (0) 2022.02.10
    springwebmvcproject  (0) 2022.02.09
    springwebmvcproject  (0) 2022.02.08
    springdbaccess (2)  (0) 2022.01.28
Designed by Tistory.