본문 바로가기

Web/spring

[Spring Test]

728x90
더보기

https://youtu.be/rs_ReNmLISw?list=PLwouWTPuIjUj_QqgXlFsqjUwyC0-5dZ_q

 

 

Mock 서버

 

 

 

 

 

 

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