면접준비

테스트 코드 특강

everyday-spring 2024. 9. 10. 19:56

Given - When - Then

Given 자원할당 테스트를 위한 세팅 anyLong

When 테스트 유닛 실행 

Then 결과 검증 assert..., verify

Junit5

Java 언어에서 사용되는 단위 테스트 프레임워크

Dependency

'org.springframework.boot:spring-boot-starter-test'

Simple Sum Test

public class BasicTest {
	@Test
    @DisplayName("더하기 테스트")
    public void calTest() {
    	// given
        int a = 1;
        int b = 3;
        
        // when
        int sum = a + b;
        
        // then
        // 두 값이 같다
        assertEquals(4, sum);
    }
}

@Mock

테스트를 위한 가짜 객체

@InjectMocks

Movk 객체를 주입하여 실제 객체의 의존성을 자동으로 설정함 mock이 아닌 실제 객체

테스트하려는 실제 객체를 생성하고, 그 객체의 의존성들만 mocking된 객체로 대체하는 것

Mockito 

mock객체를 만들고 관리하고 검증할 수 있는 방법을 제공하는 프레임워크

@SpringBootTest와 다르게 별도 환경, 구성에 대한 제약 사항이 없기 때문에 매우 빠르게 동작

 

Unit Test

Unit (함수, Method) 애플리케이션에서 가장 작은 테스트 가능 요소

FIRST원칙

  • Fast 유닛 테스트는 빨라야함
  • Isolated 테스트는 독립적으로 실행해야함
  • Repeatable 환경에 상관없이 실행할 때마다 같은 결과를 만들어야함
  • Self-Validating 명확히 성공/실패로 구분하여 자체로 결과를 검증할 수 있어야함
  • Timely 개발간에 즉시 작성해야함 "TDD방법론"