공부/자바 플레이그라운드 with TDD, 클린코드
-
자동차 경주 게임 피드백 영상 시청 후공부/자바 플레이그라운드 with TDD, 클린코드 2022. 3. 2. 22:07
테스트하기 어려운 부분을 찾아 가능한 구조로 개선 Object Graph에서 다른 Object와 의존관계를 가지지 않는 마지막 노드를 먼저 찾는다. RacingMain -> RacingGame -> Car 같이 마지막인 Car를 먼저 한다. 또한 Car에 Random값에 의존성이 있다면 상위 Object로 올려서 하위 Object를 테스트 할 수 있도록 한다. getRandomNo 메서드를 protected로 변경 후 test코드에서 new Car {} 를 통해 override 해서 getRandomNo를 재정의하여 테스트도 가능하다. 하지만 장기적으로는 리팩토링을 통해 해결하자. 테스트는 경계값으로 하는것이 좋다. move가 되려면 4이상이라는 요구사항이면 3 과 4가 경계값 미리 예측을 하여 과도한 ..
-
숫자야구게임 구현(2) - 요구사항 작성, TDD 적용공부/자바 플레이그라운드 with TDD, 클린코드 2022. 2. 16. 22:33
SI업무를 할 때 ProductionCode 를 먼저 작성하는것뿐만 아니라 TestCode는 매번 Controller 호출하기 싫어서 Service 메서드 호출하는 값만 확인하는 용도로 썼었다. 정말 우물안 개구리라는걸 절실히 느꼈다. 또한 Intellij를 사용하니 TDD방법론을 적용하면서 역으로 TestCode -> ProductionCode 만드는 것이 놀랍도록 쉬워서 이젠 Eclipse도 떠나보낼 때가 온 것같다.. github 요구사항 분석 #기능 요구 사항 기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다. Ball BallPosition position BallNumber num [ ✔ ] 1 ~ 9 숫자범위 BallNumber.validateNumber Bal..
-
숫자야구게임 구현(1)공부/자바 플레이그라운드 with TDD, 클린코드 2022. 2. 13. 20:25
TDD가 익숙치 않아 프로덕션 코드를 구현하고 단위 테스트를 적용시켜 버렸다.. 숫자야구게임 피드백을 보고 다시 구현할 것이다. BaseBallGameTest public class BaseBallGameTest { @ParameterizedTest @CsvSource({ "845,낫싱", "891,1볼", "137,포볼", "123,1볼 1스트라이크", "723,2스트라이크", "713,3개의 숫자를 모두 맞히셨습니다! 게임 종료" }) void baseBallGameCoreTest(String input, String expected) throws Exception { BaseBallGameCore bbgc = new BaseBallGameCore("713"); bbgc.calc(input); ass..
-
단위 테스트 실습 - 문자열 계산기공부/자바 플레이그라운드 with TDD, 클린코드 2022. 2. 13. 17:15
github 테스트 코드 public class StringCalculatorTest { @ParameterizedTest @CsvSource({ "1 + 2,3", "3 * 5,15", "10 / 5,2", "2 + 3 * 4 / 2,10", "5,5" }) @DisplayName("문자열로 들어온 계산식 테스트") void execute(String str, int expectedResult) throws Throwable { assertThat(new StringCalculator(str).parse().calc()).isEqualTo(expectedResult); } static Stream exceptionTestParameters() { return Stream.of( Arguments.of(..
-
객체 지향 생활 체조 원칙공부/자바 플레이그라운드 with TDD, 클린코드 2022. 2. 3. 23:53
너무 혼자 구글 검색과 디버그를 통해 공부해왔다. 그로인해 시간이 너무 많이 걸리고, 혼자만의 생각에 빠지는 듯 하다. 다른사람의 지식을 돈으로사서 시간도 아끼고 다른사람의 생각도 알아보자. 독학을 통해 단편적인 지식만 가지고있어서, 제대로 한번 배워보고자 한다. 자바 플레이그라운드 with TDD, 클린코드 객체 지향 생활 체조 원칙 한 메서드에 오직 한 단계의 들여쓰기만 한다. else 예약어를 쓰지 않는다. 모든 원시 값과 문자열을 포장한다. 한 줄에 점을 하나만 찍는다. 줄여 쓰지 않는다(축약 금지). 모든 엔티티를 작게 유지한다. 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. 일급 컬렉션을 쓴다. getter/setter/프로퍼티를 쓰지 않는다.