버그란?
- 소프트웨서가 예상치 못한 결과를 내는 것
소스코드
나설계과정에서의 오류
때문에 발생
- Development: 개발
- Unit Tests (단위 테스트): 개발자 테스트
- QA Testing:
- 블랙박스 테스팅
- 주로 QA 팀이 Production 환경과 유사한 환경(Stage)에서 테스팅
- Production: 실 서비스 운영 환경
프로그램을 작은 단위로 쪼개 각 단위가 정확하게 동작하는지 검사한다.
문제 발생시 정확하게 어느 부분이 잘못되었는지를 빠르게 확인할 수 있다.
스프링에서 단위테스트를 하는 것은 스프링 컨테이너에 올라와 있는 Bean 테스트 하는 것이다.
assert() 메소드를 사용해 테스트가 정산인지 아닌지 판별
-> assertEquals(예상값, 실제값)
각 @Test 어노테이션 메서드 호출 시 새로운 인스턴스를 생성하여 독립적인 테스트가 이뤄진다.
@Test
@Before
@After
@Ignore
TDD (Test-Driven-Development)
테스트 코드 작성 후 실제 동작하는 코드 개발
설계 -> 테스트 -> 개발
Given - When - Then Pattern
- Given - 준비
- When - 실행
- Then - 검증
테스트를 하고 싶은 파일 Alt + ins -> Tset 클릭 후 바로 ok
테스트 코드 작성 후 run
각 테스트 케이스는 서로 분리되어야 한다.
하지만 di 한 경우에는 Mock 객체를 사용해야한다. (가짜 객체)
Mockito mock
testImplementation 'org.mockito:mockito-core:4.8.0' testImplementation 'org.mockito:mockito-junit-jupiter:4.8.0'
모킹할 객체 표기
@InjectMocks
모킹한 객체 주입해주는 코드
@Mock
ProductRepository productRepository;
@InjectMocks
ProductService productService;
@Mock
User user;