일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 입출력
- jdk11
- 백준
- Project
- SpringBoot
- IntelliJ
- javascript
- MariaDB
- JDK
- 공유DB
- 코테
- gradle
- MVC
- 자바
- spring boot
- Controller
- JPA
- spring
- Java
- ps
- 프로젝트
- coding test
- 취준생
- 코딩테스트
- 팀프로젝트
- 자취
- AWS
- 디자인패턴
- React
- 스프링
Archives
- Today
- Total
Tech Collection
테스트 코드 작성하는 이유 본문
728x90
반응형
Test Code 장점
1. 코드 작성 시간 줄일 수 있음
2. 서버를 실행하지 않고 코드를 테스트 할 수 있음
3. 실수를 줄여줌
4. 깔끔한 코드
작성 방법
public void 기본_틀() {
// given
테스트를 하기 위한 정보 제공
// when
테스트 할 구문
// then
테스트 후 검증
}
- given, when, then 주석을 먼저 달아주고 밑에 하나씩 채워 넣는다.
사용할 어노테이션
@SpringBootTest / @RunWith(SpringRunner.class)
두 가지는 항상 같이 쓰인다.
해당 클래스를 전체적으로 테스트한다.
@Test
메소드 위에 붙여서 메소드를 테스트한다.
@After
테스트가 끝나고 난 후 실행할 메소드 지정
@Autowired
필드주입을 통해 DI를 한다.
Board Repository Test save 예시
@Runwith(SpringRunner.class)
@SpringBootTest
public class BoardRepositoryTest{
@Autowired
private BoardRepository boardRepository;
@After
public void after() {
// test가 끝나고 난 후 테스트시 DB에 들어간 정보 지우기
boardRepository.deleteAll();
}
@Test
public void save() {
// given
// 테스트 시 넣을 정보 지정
String title = "제목";
String content = "내용";
// when
// 나는 따로 Board 클래스에 build 생성자를 만들었기 때문에 사용해서 repository에 저장해 줌
boardRepository.save(Board.builder()
.setBrd_title(title)
.setBrd_content(content)
.build());
// then
List<Board> boardList = boardRepository.findAll(); // 저장된 board 목록 불러오기
Board board = boardList.get(boardList.size() -1); // 불러온 목록 중 제일 끝에 있는 정보를 board에 저장
// Assertions의 assertThat을 사용
assertThat(board.getBrd_title).isEqualTo(title);
assertThat(board.getBrd_content).isEqualTo(content);
}
}
알아두면 좋을 FIRST
Fast
가능한 빠르게 실행되어야 한다
Independent
단위테스트는 다른 테스트의 영향을 받지 않고 순서에 상관없이 실행가능해야 한다.
Repeatable
반복가능해야 한다, 실행할 때마다 같은 결과가 나와야 한다.
Self-validating
자체검증 가능해야 한다 (ex. assertThat)
Timely
TDD의 경우 제품 코드가 작성되기 바로 전에 단위테스트가 작성되어야 한다.
728x90
반응형
'Build > Note' 카테고리의 다른 글
[NoSQL] ElasticSearch 구축 #1 (0) | 2023.04.05 |
---|---|
[Rest Controller] @PutMapping, @DeleteMapping 동작하지 않을 때 (0) | 2021.03.24 |
[Thymeleaf] 기본 문법 (0) | 2021.02.18 |
[Thymeleaf] Gradle에 적용하기 (0) | 2021.02.18 |
[Spring Structure] @Controller? @RestController? (0) | 2021.01.19 |