본문 바로가기
Back-end/Java

TDD

by JiGyeong 2022. 12. 5.

V-Model

Requirement : 요구사항 분석

System Specification : 논리적 설계

[[Coding]]

Unit Testing : 소스코드, 클래스 단위

Integration Testing : 통합테스팅, 모듈 상호 연동

System Testing : 기능 테스팅, 비기능 테스팅( 보안, (성능)무중단, 몇초 이내 조회 )

Acceptance Testing : 인수 테스팅, 고객 주도

 

 

JUnit Test

생명주기 어노테이션

@BeforeAll : 클래스 전체 테스트케이스 실행 전 세팅해주는 단계

@BeaforeEach : 각각의 테스트 실행 전마다 인스턴스가 실행됨

@AfterEach : 각각의 테스트 종료마다 인스턴스가 실행됨 (거의 Clean Up)

@AfterAll : 소멸

 

Tag

Tag를 달아놓으면 해당 키워드를 태그로 하는 테스트만 별도로 실행할 수 있다.

@Tag("import")

 

 

테스트시 사용하는 Matcher 문법

 

Hamcrest

import static org.hamcrest.CoreMatchers.equalTo

 

AssertJ

import static org.assertj.core.api.Assertions.assertEquals

 

Coverage

Test 코드를 돌릴때 기존 코드를 얼마나 커버해 줄 수 있는지 알아보는 방법

Run with Coverage

 

스텁 (Stub)

실제 코드 대신에 실행시에 삽입되는 코드 조각

"미리 결정된 행위 제공"

1. 스텁 초기화

2. 테스트 실행

3. 어설션 확인

ex ) HTTP 연결 테스트, 외부시스템이 복잡해서 수정할 수 없을때, 제어할 수 없는 환경에 의존할 때

Server server = new Server(8081);
server.setStopAtShutdown(true);
server.start();

 

Mockito

인터페이스를 만족하는 Mockup 객체를 테스트를 위해 임의로 생성해줌

"미리 결정된 행위 미제공"

대신 예상치를 설정

when(행위).thenReturn(false)

행위 확인

verify(authMock).authenticateUserMethod(name, password)

 

@Spy

* 실제 객체를 감싸는 목업객체 생성

HashMap<String, String> hashMap = new HashMap<String, String>();
spyMap = spy(hashMap);
spyMap.put("key", "value")
when(spyMap.get("key")).thenReturn("Another value");

 

'Back-end > Java' 카테고리의 다른 글

ERROR Could not generate DH Keypair  (0) 2021.02.19
[디자인패턴] Observer Pattern  (0) 2019.09.10
[디자인 패턴] Bridge Pattern  (0) 2019.08.21
델리게이션 구조란?  (0) 2019.06.10
[JAVA] Thread  (2) 2016.06.10