TDD 기본 싸이클 작성
TDD 싸이클 돌려보기(덧셈계산기)
📜 제목으로 보기
TDD 싸이클
- TDD 구현
- 싸이클
-
fail
떨어지는test코드
생성- case별로 메서드_이름을 표기하여 작성한다.
-
main(프로덕션)코드 작성 후 pass
- 2번째부터는 개별 pass -> 전체pass 순으로 확인
- refactoring(rename부터 시작)
-
- 싸이클
-
test에서 package > XXXTest class를 먼저 만든다.
-
generate(alt+insert)
기능으로@test
로 생성 -
메서드_명
은 한글명으로 해도 되고, 단위테스트가 의미하는 바만 잘 나타내면된다. 여기선여러 경우 중 1가지(구분자 없는) 경우
로 시작을 한다.
-
- 클래스명 + 메소드명을 먼저 사용하여 할당을
반환형 actual
변수로 받은 뒤-
given
(값 -> 변수 선언 등) ->when
(actual까지 로직) ->then
( asesertThat(actual).isEqualTo(expected))// given String data = "(1,2)"; // when String result = data.substring(1, data.length()-1); // then assertThat(result).isEqualTo("1,2");
-
-
assertThat( actual ).isEqualTo( )
에서 인자에 예상값(우리가 원하는 값)을 넣는다. -
SC 없는 클래스를 만들 되,
미리 main쪽에 package
를 만들어 놓은 상태에서 -> 생성경로를main
으로 바꿔준다.- test > package >
XXXTest
class - 내부 XXX클래스.메서드() —> main > package >
XXX
class로 생성 - test에만 존재하는 package를 선택하면, main에 못만드니 미리 만들어놔야한다.
- test > package >
-
**클래스 생성 직후 바로 돌아와(
Back
기능 ctrl+u) method도 만들어준다 **-
이 때,
actual(1)
을 반환하지 않는 불완전한 메소드를수정없이 test실행부터
해서Error
를 낸다
-
-
test코드(SCTest)가
pass
하도록 프로덕션코드(main코드, SC)를 수정한다. -
pass한 프로덕션 메소드를
refactoring
한다.-
파라미터 이름
바꾸는 것도F2
=refactoring
- @test 막 사용했던
class이름(XXX)
바꾸는 것도 F2 = refactoring- 이 때,
test class이름 XXXTest
도 바꾸자고 권유한다.
- 이 때,
-
-
더이상 refactoring할게 없다면 -> 새로운 단위테스트를 클래스.메소드()부터 만들어서 나아간다.
-
직전에 만든 테코랑 비슷하다면, 복붙해서 시작한다.
-
테케는 가능한 가장 작은 단위를 만드는 경우며, 케이스 ->
if 상황별 새로운 메소드
로 나누고 -> 상황에 맞게인자 변경
->expected
- 구분자 없음 -> “1” -> 1
- 컴마 구분자 -> “1,2” -> 3
-
-
다음 테케도 프로덕션 코드 수정없이 일단 돌려서 fail을 떨어뜨린 뒤-> 에러보고 참고하여 찾아가서 수정
-
해당 테케실행 -> 전체 테케도 실행해서 전체 통과하는지 확인을 한다.
-
pass후엔 refactoring하기
-
for문으로 들어가는 indent ->
메소드 추출 refactoring
-
return문까지 잡아서 추출해보기(
alt+ctrl+m
-> 안되면ctrl+.
)
-
-
-
input/output이 명확한 쉬운 TDD였다.
- 자동차 경주를 하려면, 너무 힘들 것
- 단위테스트만 만들어서 해볼 것
- fail하는 test생성 -> 프로덕션수정으로 pass -> refactoring