게시글을 등록하는 테스트를 진행하겠습니다.
반복문으로 320개 행을 추가해보겠습니다.
public class BoardMapperTest {
@Test
public void insertTest() {
for(int i=1; i<=320; i++) {
BoardVO article = new BoardVO();
article.setTitle("테스트 제목."+i);
article.setWriter("테스트 이름"+i);
article.setContent("테스트 내용"+i);
mapper.insert(article);
System.out.println("게시물 등록 성공");
}
}
}
잠깐!
Mapper 인터페이스를 의존성 주입을 해 줘야 쿼리문이 수행됩니다.
@Runwith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(location={"빈등록해주는 설정파일 경로"})
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/mvc-config.xml"})
public class BoardMapperTest {
@Autowired
private IBoardMapper mapper;
@Test
public void insertTest() {
for(int i=1; i<=320; i++) {
BoardVO article = new BoardVO();
article.setTitle("테스트 제목."+i);
article.setWriter("테스트 이름"+i);
article.setContent("테스트 내용"+i);
mapper.insert(article);
System.out.println("게시물 등록 성공");
}
}
}
@Autowired로 의존성을 주입 하기위해서는 jUnitTest에서는 추가적인 어노테이션인 @Runwith(SpringJUnit4ClassRunner.class)를 선언해줘야하며 이 어노테이션을 사용하기 위해서는 Spring test 라이브러리가 있어야합니다.
mapper를 빈등록해주는 설정파일은 mvc-config.xml에서 mybatis-spring:scan 으로 빈등록 설정을 자동으로하고 있습니다.
빈 등록 해주는 설정파일의 위치를 자동으로 잡아줘야하며 @ContextConfiguration(location={"빈등록해주는 설정파일 경로"}) 를 선언해줘야 합니다.
게시글 목록을 조회하는 테스트를 진행합니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/mvc-config.xml"})
public class BoardMapperTest {
@Autowired
private IBoardMapper mapper;
//게시글 목록 조회 테스트
@Test
public void getListTest() {
List<BoardVO> list = mapper.getArticleList();
for(BoardVO vo : list) {
System.out.println(vo);
}
}
}
람다식으로 변경이 가능합니다
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/mvc-config.xml"})
public class BoardMapperTest {
@Autowired
private IBoardMapper mapper;
//게시글 목록 조회 테스트
@Test
public void getListTest() {
mapper.getArticleList().forEach(vo->System.out.println(vo));
}
}
forEach가 확장for문을 대신합니다.
원래방식대로라면 메서드를 호출하고 그 결과값을 list레퍼런스에 담은 후 반복문을통해 list로부터 vo로 꺼낸후 한번씩출력하는 동작을 여러번 반복합니다.
List를 생략하고 메서드 그대로 수행하면서 반복문으로 vo에담은후 그것을 반복해서 출력해주는것입니다.
이것이 람다식의 메서드 체인방식입니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/mvc-config.xml"})
public class BoardMapperTest {
@Autowired
private IBoardMapper mapper;
//게시글 등록 테스트
@Test
public void insertTest() {
for(int i=1; i<=320; i++) {
BoardVO article = new BoardVO();
article.setTitle("테스트 제목"+i);
article.setWriter("테스트 이름"+i);
article.setContent("테스트 내용"+i);
mapper.insert(article);
System.out.println("게시물 등록 성공");
}
}
//게시글 목록 조회 테스트
@Test
public void getListTest() {
/*
List<BoardVO> list = mapper.getArticleList();
for(BoardVO vo : list) {
System.out.println(vo);
}
*/
mapper.getArticleList().forEach(vo->System.out.println(vo));
}
//게시글 단일 조회 테스트
@Test
public void getArticleTest() {
BoardVO article = mapper.getArticle(44);
System.out.println(article);
}
//게시물 수정 테스트 : VO의 세터를 사용할 수정내용 (글제목, 글내용)을 입력하고 수정을 테스트 해 보세요.
@Test
public void update() {
BoardVO article = new BoardVO();
article.setBoardNo(1);
article.setTitle("글제목"); article.setContent("글내용");
mapper.update(article);
System.out.println("수정 후 정보 : "+mapper.getArticle(44));
}
//게시물 삭제 테스트 : 게시글 번호를 통한 삭제를 확인하세요.
@Test
public void delete() {
mapper.delete(44);
System.out.println("삭제 후 정보 : "+mapper.getArticle(44));
}
}
outline에 뜨는 메서드를 하나씩 눌러서 Test합니다.
이것이 단위테스트 입니다.
이렇게 단위테스트를 해서 DB에 잘 입력이되는가 혹은 아작스로데이터를 받을때 데이터를받아지는가에 대한 로직들을 미리 테스트를 거쳐 구현할수있도록 합니다.
프로그램이 커지면 커질수록 미리 테스트로 확인해보고 적용하는것이 효율적입니다.
'SpringFramework > BASIC' 카테고리의 다른 글
[DELETE] 요청 POST방식/ (GET방식 불가) (0) | 2020.09.05 |
---|---|
[ @ParhVariable ] 어노테이션을 통한 uri path로 파라미터를 처리하는 방법 (0) | 2020.09.05 |
[JunitTest 1] 단일 테스트 / 오라클 DB 연결 Test / 자동 리소스 닫기 (0) | 2020.09.04 |
[MyBatis] resultType / 객체 별칭 관리기능 mapperLocations 주입 (0) | 2020.09.04 |
[MyBatis] resultMap / #{ } 문법 바인딩변수 처리 (0) | 2020.09.03 |