본문 바로가기

반응형

분류 전체보기

(482)
TDD 학습 및 실습 정리8(다양한시각) TDD 학습 및 실습 정리7에 이어 정리합니다. TDD가 주는 설계상의 이점- TDD 자체가 단위의 작은 설계를 만들어냅니다.- 입력, 출력, 모듈이 동작하기 위해 필요한 요소를 파악되며 사전에 테스트됩니다.- 강형 마이크로 디자인이라고도 합니다.- 의존성이 적은 자기 완결성이 높은 모듈이 됩니다. TDD와 객체 지향 프로그래밍(OOP)OOP가 강조되는 이유는 안전한 부품과 재사용성OOP의 기본 원칙 -> 모듈은 높은 응집도를 유지하고 낲은 결합도를 갖도록 만들어야 합니다. 의존 관계가 많은 코드는 테스트 코드 자체를 만들기 어렵게합니다.기능 위주로 테스트를 먼저 작성하다보면 해당 클래스에 필요한 기능인이 아닌지를 바로 알 수 있습니다. 유연한 코드변화에 쉽게 적응할 수 있는 코드지나치게 다양한 선택지가..
TDD 학습 및 실습 정리7(TDD작성패턴) TDD 학습 및 실습 정리6에 이어 정리합니다. 상황별 테스트 생성자 테스트굳이 테스트 케이스를 작성하지 않습니다.초기 값을 가져야 하는 생성자에 따라 생성하여 테스트를 작성합니다.DTO 스타일의 객체 테스트단순 setter/getter로 이루어진 DTO는 굳이 테스트 하지 않습니다.특정 목적을 가진 불변 객체의 경우에는 getter나 is로 테스트를 작성합니다. 닭과 달걀 메소드 테스트메소드가 서로 맞물려 있는 경우로직 메소드(add, remove, set 계열 메소드)와 상태 확인 메소드(get, show, is 계열 메소드)가 짝일 경우 public class Test{ @Test public void add() throws Exception{ User user = new User(); user.a..
TDD 학습 및 실습 정리6(Unitils) TDD 학습 및 실습 정리5에 이어 정리합니다. 실습보다는 어떤 내용이 있는지 확인합니다. Unitils란?단위 테스트를 좀 더 쉽게 만들고 유연하게 사용 할 수 있는 지원 라이브러입니다.다운 잘 클릭해야합니다. Unitils의 기능들 리플렉션 단정문객체 동치성 비교동일성 : 같은 객체인지를 판단동치성 : 객체가 표현하는 상태가 일치하는지를 판단 assertReflectionEquals(예상 객체, 실제 객체, ReflectionComparatorMode); ReflectionComparatorMode 설명 LENIENT_ORDER 컬렉션이나 배열을 비교할 때 순서는 무시합니다. IGNORE_DEFAULTS 예상 객체의 필드 중 타입 기본 값을 갖는 필드에 대해서는 비교를 하지 않습니다. LENIENT_..
TDD 학습 및 실습 정리5(DbUnits) TDD 학습 및 실습 정리4에 이어 정리합니다. 실습보다는 어떤 내용이 있는지 확인합니다. DbUnit란?테스트 프레임워크보다는 테스트 지원 라이브러리에 가깝습니다. DB와 DBMSDB는 다루기 쉽도록 만들어 놓은 논리적 구조의 데이터입니다.DBMS는 DB를 관리하는 시스템입니다. 우리가 쓰고 있는 postgresql, mysql은 DBMS이지요.현업에서는 DB라고 부르기 때문에 딱히 구분하지 않습니다. 데이터셋데이터베이스의 테이블과 같은 형태를 xml이나 csv파일로 비연결지향하는 형태입니다.데이터 베이스는 연결 지향입니다. DbUnit 데이터셋의 종류FlatXmlDataSet- 테이블 이름을 xml, tag 구성요소로 적습니다.- 컬럼 이름은 속성으로 적습니다.- null 값을 넣을 컬럼은 작성하지 ..
TDD 학습 및 실습 정리4(한계극복하기) TDD 학습 및 정리3에 이어 정리합니다. Mock 객체란 - 하나의 예시로 자동차 설계 시 실 재료를 사용하면 비용이 많이듭니다.나무를 대신해서 설계 뜬 자동차 모형을 Mock이라고 합니다.- 제품의 외양을 흉내 낸 모조품 Mock 객체를 사용 해야 하는 시기1. 테스트 작성을 위한 환경 구축- 환경 구축을 위한 작업 시간이 많이 필요 한 경우에 Mock객체를 사용합니다.- 특정 모듈을 아직 갖고 있지 않아서 테스트를 하지 못할 경우입니다.- 타 부서와 협의나 정책이 필요한 경우에도 필요합니다.2. 테스트가 특정 경우나 순간에 의존적 일 경우- 예를 들어 네트워크 연결의 접속 시간 제한을 구현하는 경우접속 시도 실패 후 5초까지 1초마다 재접속 시도 하고 이후엔 에러 메세지를 만들 때- 파일 쓰기 시 ..
TDD 학습 및 실습 정리3(메소드작성법과한계) TDD 학습 및 정리3에 이어 정리합니다. 1. Test 폴더 분리 방법properties - source - add Folder 생성 된 test 폴더를 확인 후 Allow output folders for source folders 클릭하여 build 폴더를 따로 분리합니다. build 되는 class 파일을 main과 분리하기 위해 Edit 클릭 Browse를 선택 bin 아래에 test 폴더를 만들고 apply and close를 클릭하면 적용됩니다. 폴더가 따로 분리 된 것을 확인하고 분리 되지 않으면 project clean을 해봅니다. 2. 테스트 대상 메소드와 이름을 1:1로 일치테스트 대상 코드 : public int getBalance() {...}테스트 코드 : @Test public..
알고리즘 단계별로 풀어보기 : BOJ-2750(수정렬하기) 문제(출처)N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력552341 예제 출력12345 내 풀이import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter; public class M..
알고리즘 단계별로 풀어보기 : BOJ-6064(카잉달력) 문제(출처)최근에 ICPC 탐사대는 남아메리카의 잉카 제국이 놀라운 문명을 지닌 카잉 제국을 토대로 하여 세워졌다는 사실을 발견했다. 카잉 제국의 백성들은 특이한 달력을 사용한 것으로 알려져 있다. 그들은 M과 N보다 작거나 같은 두 개의 자연수 x, y를 가지고 각 년도를 와 같은 형식으로 표현하였다. 그들은 이 세상의 시초에 해당하는 첫 번째 해를 로 표현하고, 두 번째 해를 로 표현하였다. 의 다음 해를 표현한 것을 이라고 하자. 만일 x < M 이면 x' = x + 1이고, 그렇지 않으면 x' = 1이다. 같은 방식으로 만일 y < N이면 y' = y + 1이고, 그렇지 않으면 y' = 1이다. 은 그들 달력의 마지막 해로서, 이 해에 세상의 종말이 도래한다는 예언이 전해 온다. 예를 들어, M ..

반응형