2015년 4월 7일 화요일

Unit Test Junit, TDD, and CI(수업 노트06 TDD 1일차)

아 다행이도 오늘은 복습 환경 구축이 위주임
 예제는 사용자 정보(이름만)를 관리하는(일종의 주소록) 예제로 진행 예정

요구사항(1)
   사용자 등록 가능
   사용자 조회 가능

 메이븐 프로젝트 생성 -> kr.kosta ,UserMgnt 로 생성

 
생성하니 테스트와 실 사용 소스가 분리되는 틀이 만들어져 있음

test/java 밑에 패키지를 만들고 그 밑에 클래스 하나를 만듬
클래스에안에  @test 메소드를 만들고
pom 파일에 junit 을 가져오도록 디펜던시를 걸어준다.

---------------------------------------
  <dependencies>
  <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8</version>
  </dependency>
  </dependencies>
</project>
---------------------------------------이렇게

  -> 그러면 @test 를 끌어오면서  import만하면 사용이 가능해짐
그리고 다음과 같이 적어준다. 유저 를 만들고, 해당 유저의 아이디를 가져오도록 지시함

일단 팩키지 구성은 아래와 같고 이중 3개 팩키지, 4개 파일을 추가했다.

src/main/java
kr.kosta.user.domain
     -User
kr.kosta.user.service
     -UserService
     -UserServiceImpl

src/test/java
kr.kosta.user.service
     -UserServiceTest


이중 테스트에 추가한 유저 서비스 테스트

실제 구현부의 유저 서비스 클래스

유저 객체를 생성위한 유저 클래스 
 

유저 서비스에 실 숫자 입력을 위한 가상 입력 클래스
 
이렇게 완성되었으나 실제 구현은 요구사항에 따른 메소드 선언 -> 메소드 선언에 따른 인터페이스 구현
  ->  인터페이스에 들어갈 내용(객체 생성위한 클래스 생성) -> 테스트 구현구 구체화 후 실제 입력값을
         받기위한 클래스 선언 -> 실제 값 입력이 되도록 리턴값 설정
    순으로 에러 제거를 위한 구현간 구체화가 이루어졌다.
        

요구사항(2)
   전체 등록된 사용자 수 조회
   전체 등록된 사용자 목록 조회
   사용자 등록 및 조회 기능을 추가(요구사항(1)의 기능 두가지를 합친 기능)
   ......

 요구사항(2)의 1번을 구현

public void allUserCountTest(){
UserService userService = new UserServiceImpl();
int allUserCount = userService.allUserCount();
assertSame(0,allUserCount);
}
이러면 두가지 에러가 나는데 인터페이스에 allUserCount를 선언해주고, UserServiceImpl 에
  빈 메소드를 추가해주면
   아직 입력하지 않았을때 기대되는 값 0을 얻을 수 있게된다. - 테스트 pass

요구사항(2)의 2번도 마찬가지로 이클립스 컨트롤 + 1 신공으로 완성 가능

하지만 내용이 없는 상태
---->>> 7일차 진행예정

댓글 없음:

댓글 쓰기