본문 바로가기

728x90
반응형

TDD이론과연습&리팩토링

(9)
Sonarqube 설치 intellij 연동하기 로컬에 SonarQube설치 https://www.sonarsource.com/products/sonarqube/downloads/ 다운로드 (Community Edition) java 11이상이 설치되어 있어야 한다. 설치 후 SonarQube 폴더를 Program Files밑으로 옮긴다. StartSonar.bat를 실행한다. 그러면 cmd창이 뜨고 소나큐브가 실행된다. http://localhost:9000 id : admin pw : admin 로그인 후 비밀번호를 변경한다. 프로젝트 생성 → Manually → 프로젝트 이름 지정 이후 토큰을 발급한다. Locally 선택 Generate하면 토큰이 생성된다. (저장해둬야함) IntelliJ 플러그인 설치 sonar검색 후 SonarLint 혹은..
JUnit5에서 @Test expected 사용법 JUnit5에서 @Test(expected = Exception.class)가 없어졌다. 기존 Junit4에서 사용하는 방법 @Test(expected = NullPointerException.class) public void givenNull_whenThrowsErrorOnCreate_thenCorrect() { String name = null; Optional.of(name); } NullPointerException을 발생시켜야 테스트가 통과한다. Junit5에서 사용하는 방법 @Test void givenNull_whenThrowsErrorOnCreate_thenCorrect() { assertThrows(NullPointerException.class, ()->{ String name = nu..
자바 플레이그라운드 TDD 자동차 경주 기능 요구사항 각 자동차에 이름을 부여할 수 있다. 자동차 이름은 5자를 초과할 수 없다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다. 자동차 이름은 쉼표(,)를 기준으로 구분한다. 전진하는 조건은 0에서 9 사이에서 random 값을 구한 후 random 값이 4이상일 경우이다. 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다. 실행 결과 위 요구사항에 따라 3대의 자동차가 5번 움직였을 경우 프로그램을 실행한 결과는 다음과 같다. 경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분). pobi,crong,honux 시도할 회수는 몇회인가요? 5 실행 결과 pobi : - crong : - honux : - pobi : -- cron..
구글 코딩 컨벤션 위반 Rule 수정하기 'x' is not followed by whitespace x는 for, if 등 다양한데 공백이 다음에 와야 한다. 'if' construct must use '{}'s. if문을 사용할 때 {} 블럭을 사용해야 한다. ';' is preceded with whitespace. 앞에 공백이 와야 한다. 'CTOR_DEF' should be separated from previous line. 이전 문장과 분리되어야 한다.(한줄 enter)
intellij 구글 코딩 컨벤션 적용하기 플러그인 설치로 구글 코딩 컨벤션을 적용할 수 있다. 1. File > Settings > Plugins > CheckStyle-IDEA 설치 2. Settings > Tools > CheckStyle Google Checks 선택 후 적용 3. 하단의 CheckStyle탭에서 위반 룰을 확인할 수 있음 Google Formatter 설치 1. Plugins > google-java-format 설치 IDE 재시작 2. https://github.com/google/styleguide 내 'intellij-java-google-style.xml' 다운로드 3. XML경로 지정
TDD 구현시 체크 사항 도메인 기반 지식이 있으면 좋지만 어려울 경우 체크할 것! 구현할 기능 목록 작성하기 구현할 기능 목록을 작성한 후에 TDD로 도전 - todo list TODO List는 계속 변경이 되는 것 기능 목록을 작성하는 것도 고민이 필요하고 연습이 필요하다. 적은 테스트 값으로 가능한 범위를 모두 테스트할 수 있는 것이 좋다. 이것도 어렵다면 일단 구현한다. (원래 하던대로) 도메인 지식을 쌓는다. 구현한 모든 코드를 버린다. 구현할 기능 목록 작성 또는 간단한 도메인 설계 기능 목록 중 만만한 것부터 TDD구현 시작 복잡도가 높아져서 리팩토링하기 힘든 상태가 되면 다시 버린다. 다시도전 TDD 단계 실패하는 작은 단위 테스트를 작성한다. 처음에는 컴파일조차 되지 않을 수 있다. 빨리 테스트를 통과하기 위해..
자바 플레이그라운드 문자열 덧셈 계산기 목차 기능 요구사항 쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로 분리한 각 숫자의 합을 반환 (예: “” => 0, "1,2" => 3, "1,2,3" => 6, “1,2:3” => 6) 앞의 기본 구분자(쉼표, 콜론)외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는 문자열 앞부분의 “//”와 “\n” 사이에 위치하는 문자를 커스텀 구분자로 사용한다. 예를 들어 “//;\n1;2;3”과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다. 문자열 계산기에 숫자 이외의 값 또는 음수를 전달하는 경우 RuntimeException 예외를 throw한다. 프로그래밍 요구사항 indent(들여쓰기) depth를 2단계에서 1단..
자바 플레이그라운드 with TDD - 문자열 계산기 목차 단위 테스트 실습 - 문자열 계산기 다음 요구사항을 JUnit을 활용해 단위 테스트 코드를 추가해 구현한다. 요구사항 사용자가 입력한 문자열 값에 따라 사칙연산을 수행할 수 있는 계산기를 구현해야 한다. 문자열 계산기는 사칙연산의 계산 우선순위가 아닌 입력 값에 따라 계산 순서가 결정된다. 즉, 수학에서는 곱셈, 나눗셈이 덧셈, 뺄셈 보다 먼저 계산해야 하지만 이를 무시한다. 예를 들어 "2 + 3 * 4 / 2"와 같은 문자열을 입력할 경우 2 + 3 * 4 / 2 실행 결과인 10을 출력해야 한다. 힌트 문자열을 입력 받은 후(scanner의 nextLine() 메소드 활용) 빈 공백 문자열을 기준으로 문자들을 분리해야 한다. String value = scanner.nextLine(); Str..

728x90
반응형