728x90
더보기
https://youtu.be/rs_ReNmLISw?list=PLwouWTPuIjUj_QqgXlFsqjUwyC0-5dZ_q
given
when
then << assert
의존대상이 상황을 결정
외부 상황에 의한 외부 결과
1. 외부 상태에 의존한테스트(파일, db, rest, api, socker server..)
2. 상황을 만들기 어려울 수 있음
3. 결과 확인이 어려울 수 있음
TDD 작성
쉬운 코드 / 예외 코드 부터 어려움 / 정상 코드에 대한 테스트코드를 작성
TDD 통과 시키는 과정
정해진 값을 주고 리턴
값 비교하여 정해진 값 리턴
다양한 테스트를 추가하여 구현 일반화
너무 앞서나가는 테스트 코드는 좋지않다
구현이 막히면 다시 뒤로 돌아와 다시 천천히 진행
public class AdminBlockTest {
@DisplayName("새로 생성한 관리자는 차단 상태가 아님")
@Test
void newCreateAdmin_NonBlock() {
Admin admin = new Admin();
assertThat(admin.isBlocked()).isFalse();
}
@Test
void block() {
Admin admin = new Admin();
admin.block();
assertThat(admin.isBlocked()).isTrue();
}
@Test
void alreadyBlocked() {
Admin admin = new Admin();
admin.block();
Assertions.assertThatCode(() -> admin.block()).isInstanceOf(AlreadyBlockedException.class);
}
@Test
void unblock_whenNotBlocked(){
Admin admin = new Admin();
Assertions.assertThatCode(() -> admin.unblock()).isInstanceOf(NonBlockedException.class);
}
public static class Admin {
private boolean blocked = false;
public boolean isBlocked() {
return blocked;
}
public void block() {
if (blocked) {
throw new AlreadyBlockedException();
}
blocked = true;
}
public void unblock() {
if (!blocked){
throw new NonBlockedException();
}
blocked = false;
}
}
}
728x90
'Web > spring' 카테고리의 다른 글
[Spring] A Spring Custom Annotation for a Better DAO (0) | 2023.04.24 |
---|---|
[Spring] Testing @Cacheable on Spring Data Repositories (1) | 2023.04.24 |
[JPA Repository] supported keyword (0) | 2023.04.20 |
[Spring] stereotype (0) | 2023.04.15 |
[Spring Exception] Hibernate Mapping Exception – Unknown Entity (0) | 2023.04.10 |