-
springwebmvcprojectSPRING 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_boardORDER BY board_no DESC</select><select id="getArticle" resultMap="BoardMap">SELECT * FROM mvc_boardWHERE board_no=#{boardNo}</select><update id="update">UPDATE mvc_boardSET title=#{title},content=#{content}WHERE board_no=#{boardNo}</update><delete id="delete">UPDATE mvc_boardWHERE 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@Log4jpublic class BoardControllerTest {@Autowiredprivate WebApplicationContext ctx;@Autowiredprivate BoardController controller;private MockMvc mockMvc;@Beforepublic void setUp() {//가상 구조를 세팅//스프링 컨테이너에 등록된 모든 빈과 의존성 주입까지 로드해서 사용이 가능this.mockMvc = MockMvcBuilders.webAppContextSetup(ctx).build();}@Testpublic void testList() throws Exception {log.info(mockMvc.perform(MockMvcRequestBuilders.get("/board/list")).andReturn().getModelAndView().getModelMap());}@Testpublic void testInsert() throws Exception {String viewPage = mockMvc.perform(MockMvcRequestBuilders.post("/board/write").param("title", "테스트 새 글 제목").param("content", "테스트 새 글 내용").param("writer","user01")).andReturn().getModelAndView().getViewName();}@Testpublic void testContent() throws Exception {log.info(mockMvc.perform(MockMvcRequestBuilders.post("/board/content").param("boardNo", "42")).andReturn().getModelAndView().getModelMap());}@Testpublic 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);}@Testpublic 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;//게시글 등록 단위 테스트@Testpublic 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);}}//게시글 목록 전체 조회 테스트@Testpublic void getListTest() {List<BoardVO> list = mapper.getArticleList();for(BoardVO vo : list) {System.out.println(vo);}}//게시글 단일 조회 테스트@Testpublic void getArticleTest() {BoardVO vo = mapper.getArticle(44);System.out.println(vo);}//게시글 수정 테스트@Testpublic void updateTest() {BoardVO vo = new BoardVO();vo.setBoardNo(1);vo.setTitle("수정된 제목");vo.setContent("수정");mapper.update(vo);System.out.println("수정 후 정보: " + mapper.getArticle(1));}//게시글 삭제 테스트@Testpublic 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