: test driven development
테스트 코드를 먼저 만들고 개선 및 확장을 하는 개발 방식
의도대로 동작하는지 프로그램 품질 검증.
테스트를 사용하면 여러 과정을 최소화할 수 있음.
ArticleService를 검증하는 테스트 코드를 작성해보겠다.
테스트할 메소드를 선택하면 아래 사진처럼 테스트 자바 파일이 만들어진다.
스프링 부트와 연동해서 테스트하기.
@SpringBootTest
class ArticleServiceTest {
.
.
.
}
//존재하지 않는 id show 실패 test 메소드
@Test
void show() {
//예상 결과
Long id = -1L;
Article expected = null;
//실제 결과
Article article = articleService.show(id);
//두 결과를 비교
assertEquals(article, expected);
}
@Transactional 의 롤백은
1. 기본적으로 메소드 수행 실패로 동작
2. 테스트 코드의 경우 테스트 성공 후 기본 롤백
(테스트 코드가 실제 DB에 영향을 끼쳐선 안되기 때문)
따라서 여러 테스트를 한번에 테스팅하기 위해서 트렌젝션 해준다.
예상한 값과 실제 값이 동일한지 비교하는 메소드
ArticleService의 delete() 메소드가 DB에서 데이터를 삭제하는 것은 맞지만, 해당 코드에서 삭제 된 값을 반환하도록 만들어졌다.
따라서,
Article a = articleService.delete(id);
a는 null이 아닌 id의 데이터가 들어있다.
@Test
@Transactional
void delete1() {
//존재하는 id 입력 성공 test
//예상
Long id = 1L;
Article expected = new Article(id,"Hello","Content....");
//실제
Article article = articleService.delete(id);
//비교
assertEquals( expected.toString() , article.toString() );
}
열정 열정 열정