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 |