[Fail Log] 나의 카카오 도전기(5) - 빌드 및 실행 방법 & Unit Test 코드
빌드 및 실행 방법
빌드 방법
1. 압축 파일 버전
- 현재 프로젝트를 내려 받습니다. (download zip)
- 압축파일을 받으신 후 압축을 풉니다.
- pom.xml이 있는 위치에서 shift + 오른쪽 마우스하여 PowerShall 창을 엽니다. (cmd에서 해당 경로로 이동하셔도 됩니다.)
- PowerShall 명령창에 ‘mvn clean install’ 명령을 입력합니다. (maven 설치하고 환경변수 설정 필수!)
- 테스트가 완료되고 Build Success가 뜰때까지 기다린다. (테스트 결과 확인 가능)
- 그러면 target 폴더가 생성되면서 그 안에 ‘KakaoPay-0.0.1-SNAPSHOT.jar’ 파일이 생성됩니다.
2. STS4(이클립스) 사용시
- 현재 프로젝트 레포지토리 주소를 복사합니다. (clone uri)
- 이클리스 상에서 File > import 누르시고 Git > Project from Git을 클릭
- Clone URI를 누르시고 복사했던 URI를 붙여넣기 합니다.
- Next > … > import exsiting Eclipse projects 클릭 (이전까지 설정은 사용자 상황에 맞게 설정해주세요)
- finish 클릭후 프로젝트가 완전히 생성될때 까지 대기
- 프로젝트 오른쪽 마우스 클릭 > Run As > Maven install 클릭
- 테스트가 완료되고 Build Success가 뜰때까지 기다린다. (테스트 결과 확인 가능)
- 그러면 target 폴더가 생성되면서 그 안에 ‘KakaoPay-0.0.1-SNAPSHOT.jar’ 파일이 생성됩니다.
실행 방법
1. 생성된 jar 파일을 클릭한다.
2. http://localhost:8080 접속한다.
or
1. 명령 프롬프트(cmd, powerShall)를 연다.
2. java -jar /{...jar파일 생성경로}/KakaoPay-0.0.1-SNAPSHOT.jar 입력 (java 환경변수 설정 필수)
3. http://localhost:8080 접속한다.
or
(빌드 안하신 경우)
1. STS4에 프로젝트 import
2. 프로젝트 오른쪽 마우스 > Run As > 9. Spring Boot App
우선 위에 4번 문제를 풀기 위해 화면상에 json 데이터를 입력받는 일을 처리해야 했습니다. 그래서 간단하게 index.html을 생성하여 jquery Ajax 를 활용해restController를 호출 할 수 있도록 처리 했습니다. json 데이터는 스크립트 상에서 생성했지만, 만약 평가자께서 POSTMAN이라는 API테스트 툴을 알고 계신다먼 그것을 활용해 주셔도 됩니다. (POSTMAN 활용시 Json 데이터 설정이 따로 필요합니다.) index.html 은 빌드된 jar 파일 실행 후 웹브라우저에 http://localhost:8080 을 입력하시면 바로 뜹니다. 여기에 제공하신 모든 문제에 대한 답을 확인하실수 있습니다. 평가에 활용하시기 바랍니다.
조회 url입니다.
[문제 1] 년도 별 최대 합계 금액 고객 정보 추출
URL : localhost:8080/function1 [get]
[문제 2] 년도 별 거래가 없는 고객 정보 추출
URL : localhost:8080/function2 [get]
[문제 3] 년도 별, 관리점 별 거래금액 합계 추출 : 출력 순서 [합계금액 desc]
URL : localhost:8080/function2 [get]
[문제 4] 지점명 입력시 해당지점의 거래금액 합계 출력
URL : localhost:8080/function4 [post] [localhost:8080 접속시 인덱스에서 확인 가능]
Unit Test 코드
가장 중요한 부분인 Unit Test 코드 작성은 각각의 RestApi Cotroller Url 갯수만큼 클래스를 따로 만들어 생성했습니다. src/test/java/assignment/kakaopay/pickme 경로에 각각의 url 이름으로 된 패키지에 단위 테스트 클래스를 작성했습니다. @WebMvcTest 형식이고 MockMvc로 Mvc구조안에서 테스트를 구성했습니다. mybatis테스트를 위해 @AutoConfigureMybatis 통해서 실제 DB에 접속해 데이터까지 확인합니다. 실제 한번 전체 로직을 통과하고 입출력 데이터 형태를 체크하고 http status를 확인하는 구조로 생성했습니다.
실제 데이터 값을 상정하고 값이 맞는지 아닌지를 테스트하지는 않았습니다. 필요한 입출력의 형태 구조를 정확히 출력하는가에 집중했습니다.
Spring boot starter test 외에 hamcrest 의존성을 추가해서 사용했습니다. json 이나 map으로 구성된 데이터의 형태를 점검하는데 아주 이상적이 라이브러리였습니다.
문제 1 부터 3까지는 조회로서 @Test 메소드를 1개씩만 구성 하였고
문제 4 의 경우 에러를 내뱉는 상황을 상정 했기 때문에 정상출력과 에러출력을 확인하기위해 @Test 메소드를 2개 구성했습니다.
자세한 내용은 코드를 참조해 주시길 부탁드립니다.
[문제 1] 년도 별 최대 합계 금액 고객 정보 추출 /function1/function1Test.java
[문제 2] 년도 별 거래가 없는 고객 정보 추출 /function2/function2Test.java
[문제 3] 년도 별, 관리점 별 거래금액 합계 추출 : 출력 순서 [합계금액 desc] /function3/function3Test.java
[문제 4] 지점명 입력시 해당지점의 거래금액 합계 출력 /function4/function4Test.java
Comments