Tech Collection

테스트 코드 작성하는 이유 본문

Build/Note

테스트 코드 작성하는 이유

eee_269 2021. 3. 20. 12:00
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
반응형