혼자공부중
공부하는 블로그
혼자공부중
전체 방문자
오늘
어제
  • 분류 전체보기 (111)
    • 자격증 (49)
      • 정보처리기사 실기 (49)
    • JAVA (18)
    • DB (0)
    • 알고리즘 문제 풀이 (11)
      • 프로그래머스 (11)
    • Front (0)
      • HTML (0)
      • CSS (0)
      • Javascript (0)
    • 패스트캠퍼스 강의 (33)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 객체지향
  • 정보처리기사 필기
  • SQLD
  • 배열
  • 상속
  • 관계형데이터베이스
  • 데이터베이스
  • DBMS
  • 데이터모델
  • 변수
  • 인터페이스
  • 프로그래머스
  • 수제비
  • 정보처리기사 실기 정리
  • 정보처리기사
  • 시나공
  • 정보처리기사 실기
  • 코딩테스트
  • 반복문
  • 애플리케이션테스트
  • UI
  • 알고리즘
  • 메소드
  • 자바
  • 2022정보처리기사실기
  • 2022정보처리기사필기
  • Java
  • 정보처리기사 필기 정리
  • 2022정보처리기사
  • 패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
혼자공부중
패스트캠퍼스 강의

[28일차] 50일 포트폴리오 챌린지

[28일차] 50일 포트폴리오 챌린지
패스트캠퍼스 강의

[28일차] 50일 포트폴리오 챌린지

2023. 9. 4. 14:38
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S 

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr



 

Kakao 주소검색 api 살펴보기

  • 개발 가이드 | Kakao Developers 문서 (주소 검색 api)
  • 외부 api 사용하기 전에 반드시 아래 내용을 검증
    1. https://developers.kakao.com/terms/latest/ko/site-policies#quota (API 호출제한 반드시 확인)
    2. REST API 테스트 도구 활용하여 API 테스트
  • https://developers.kakao.com/ 카카오 로그인 및 내 어플리케이션 생성
  • 앱 키 → Rest API 키 정보 확인 (노출되지 않도록 주의)

Kakao주소검색 api 호출 해보기

  • 개발 전 curl 또는 postman으로 api를 직접 호출해보고 결과를 확인해보기
curl -v -X GET "<https://dapi.kakao.com/v2/local/search/address.json>" \\
  -H "Authorization: KakaoAK ${REST_API_KEY}" \\
  --data-urlencode "query=전북 삼성동 100"
{
    "documents": [
        {
            "address": {
                "address_name": "전북 익산시 부송동 100",
                "b_code": "4514013400",
                "h_code": "4514069000",
                "main_address_no": "100",
                "mountain_yn": "N",
                "region_1depth_name": "전북",
                "region_2depth_name": "익산시",
                "region_3depth_h_name": "삼성동",
                "region_3depth_name": "부송동",
                "sub_address_no": "",
                "x": "126.99597495347",
                "y": "35.9766482774579"
            },
            "address_name": "전북 익산시 부송동 100",
            "address_type": "REGION_ADDR",
            "road_address": null,
            "x": "126.99597495347",
            "y": "35.9766482774579"
        },
        {
            "address": {
                "address_name": "전북 익산시 임상동 100",
                "b_code": "4514013200",
                "h_code": "4514069000",
                "main_address_no": "100",
                "mountain_yn": "N",
                "region_1depth_name": "전북",
                "region_2depth_name": "익산시",
                "region_3depth_h_name": "삼성동",
                "region_3depth_name": "임상동",
                "sub_address_no": "",
                "x": "126.980268573424",
                "y": "35.9816612949055"
            },
            "address_name": "전북 익산시 임상동 100",
            "address_type": "REGION_ADDR",
            "road_address": null,
            "x": "126.980268573424",
            "y": "35.9816612949055"
        },
        {
            "address": {
                "address_name": "전북 익산시 정족동 100",
                "b_code": "4514013100",
                "h_code": "4514069000",
                "main_address_no": "100",
                "mountain_yn": "N",
                "region_1depth_name": "전북",
                "region_2depth_name": "익산시",
                "region_3depth_h_name": "삼성동",
                "region_3depth_name": "정족동",
                "sub_address_no": "",
                "x": "127.002020445866",
                "y": "35.9829740190924"
            },
            "address_name": "전북 익산시 정족동 100",
            "address_type": "REGION_ADDR",
            "road_address": null,
            "x": "127.002020445866",
            "y": "35.9829740190924"
        }
    ],
    "meta": {
        "is_end": true,
        "pageable_count": 3,
        "total_count": 3
    }
}

테스트 코드의 중요성

  • 테스트 코드는 기능에 대한 불확실성을 감소시킬 수 있으며, 개발자가 만든 기능을 안전하게 보호해준다. ex) A라는 기능을 추가로 개발하여 오픈했더니 기존에 잘 사용하던 B라는 기능이 문제 발생
  • 테스트 코드 작성은 개발 단계 초기에 문제 발견에 도움을 주기 때문에, 개발 시간을 단축 ex) 충분한 테스트 코드 없이 빠르게 배포 → 배포 후 문제 발생 → 원인 파악, 다시 테스트 및 코드 수정

Spock 프레임워크란?

  • Spock란 Groovy 언어를 이용하여 테스트 코드를 작성할 수 있는 프레임워크이며 JUnit과 비교하여 코드를 더 간결하게 작성 가능
  • Groovy 언어는 동적 타입 프로그래밍언어로 JVM 위에서 동작하며 Java 문법과 유사
  • 테스트 메소드 이름을 문자열로 작성할 수 있으며 given, when, then 코드 블록을 명확히 구분
  • Junit의 경우 주석으로 블록을 구분했었고, 메소드 이름 또한 제약사항이 많이 존재

Spock 프레임워크 테스트 코드 작성 순서

  • 테스트 클래스는 Groovy 클래스로 생성하고, Specification 클래스를 상속 받는다
  • feature(테스트 메서드는) def를 이용하여 함수로 선언하며, 하나 이상 블록이 존재해야 함
  • given 블록: 테스트에 필요한 값을 준비한다
  • when 블록: 테스트할 코드를 실행한다
  • then 블록: when과 함께 사용하며 예외 및 결과 값을 검증한다
  • expect 블록: then과 같으며 when을 필요로 하지 않기 때문에 간단한 테스트 및 where와 같이 사용된다
  • where 블록: 데이터가 다르고 로직이 동일한 경우 동일한 테스트에 대한 중복 코드 제거 가능

Spock 프레임워크 주요 기능

  • JUnit에서 제공하는 주요 요소들은 모두 Spock에서 제공하고 있다
class ExampleSpecification extends Specification {
	def setupSpec() {
		// run before the first feature method
	}
	def setup() {
		// run before every feature method
	}
	def cleanup() {
		// run after every feature method
	}
	def cleanupSpec() {
		// run after the last feature method
	}
}
public class DivideUtils {
	public static int divide(int input, int divide){
		if(divide==0){
			throw new ArithmeticException("0으로 나눌 수 없다.");
		}
		return input/divide;
	}
}
class MainTest extends Specification{
	def "음수가 들어오면 예외가 발생하는지 확인해보자"(){
		
		given:
		int input=5
		
		when:
		DivideUtils.divide(input,0)
		
		then:
		def e=thrown(ArithmeticException.class)
		e.message=="0으로 나눌 수 없다."
	}
}

Spock 프레임워크 장점

  • where은 | 로 구분한 Data Table로 생성이 가능하며 파라미터, 결과값을 보기 좋게 구분 가능
def "convertAddressToGeospatialData according to multiple parameters"(){
	expect:
	result==addressConverterService.convertAddressToGeospatialData(address).isPresent()

	where:
	address                        | result
	"서울 특별시 성북구 종암동"     | true
	"서울 성북구 종암동 91"         | true
	"서울 성북구 종암동"            | true
	"서울 성북구 종암동 잘못된 주소" | false
	"광진구 구의동 251-45"          | true
	"광진구 구의동 251-455555"      | false
	""                             | false
}

Spock 프레임워크 설정

  • Spock 사용하기 위해 IDE Spock 플러그인 및 의존성 추가
plugins{
	id 'groovy' //groovy 지원
	id 'java'
}
testImplementation 'org.spockframework:spock-core:2.1-groovy-3.0'
testImplementation 'org.spockframework:spock-spring:2.1-groovy-3.0' 
// Spring과 같이 사용하기 위해

//런타임에 클래스 기반 mock을 만들기 위해서 필요
testImplementation 'net.bytebuddy:byte-buddy:1.9.3'
  • groovy 디렉토리 생성 및 spock 테스트 코드 생성
저작자표시 변경금지 (새창열림)

'패스트캠퍼스 강의' 카테고리의 다른 글

[30일] 50일 포트폴리오 챌린지  (0) 2023.09.06
[29일차] 50일 포트폴리오 챌린지  (0) 2023.09.05
[27일차] 50일 포트폴리오 챌린지  (0) 2023.09.03
[26일차] 50일 포트폴리오 챌린지  (0) 2023.09.02
[25일차] 50일 포트폴리오 챌린지  (0) 2023.09.01
  • Kakao 주소검색 api 살펴보기
  • Kakao주소검색 api 호출 해보기
  • 테스트 코드의 중요성
  • Spock 프레임워크란?
  • Spock 프레임워크 테스트 코드 작성 순서
  • Spock 프레임워크 주요 기능
  • Spock 프레임워크 장점
  • Spock 프레임워크 설정
'패스트캠퍼스 강의' 카테고리의 다른 글
  • [30일] 50일 포트폴리오 챌린지
  • [29일차] 50일 포트폴리오 챌린지
  • [27일차] 50일 포트폴리오 챌린지
  • [26일차] 50일 포트폴리오 챌린지
혼자공부중
혼자공부중
대단한 목적보다는 혼자 공부하는 것에 의미를 두려고 합니다.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.