Java 앱과 실행 환경 연결
같은 계약을 Java 17 앱에 옮기고 빌드와 의존성을 확인합니다.
진도 0%
레슨
- Python 모델을 Java로 옮기기
Java 메서드와 조건문으로 제목 검증을 옮겨 같은 사례를 비교합니다.
- 객체와 컬렉션의 상태
Task와 저장소를 분리하고 목록 반환이 내부 상태를 바꾸지 않게 구현합니다.
- 빌드와 외부 의존성
JDK 17과 Spring Boot 3.1.x 시작 프로젝트의 pom.xml과 실제 사용 API를 확인합니다.
- JUnit으로 계약 확인
명세 사례를 JUnit 5 테스트로 옮기고 구현과 별도로 기대 결과를 고정합니다.
Java 앱과 실행 환경 연결 미션
m02-code-reading 미션 solution의 spec.md·cases.json·reference.py·Python 테스트와 문서 검사기를 그대로 이어받고 Java TaskService, 메모리 저장소, JUnit 검사 및 JAVA-PORT.md를 추가합니다. HTTP는 다음 모듈에서 연결합니다.
요구사항
- Python 참조 모델의 계약을 Java TaskService에 옮깁니다.
- JDK 17·Spring Boot 3.1.5와 저장소의 Maven Wrapper를 사용하며 직접 의존성의 API·scope 대응을 기록합니다.
- 캐시 준비 절차와 오프라인 실행 방법을 README에 작성합니다.
- TitlePolicy와 불변 Task, 독립된 목록 스냅샷을 쓰는 TaskRepository 및 TaskService를 구현합니다. 제목은 Python strip 공백 집합과 코드 포인트 1~40을 유지합니다.
- apply는 ok와 task/tasks 또는 error를 반환하고 snapshot은 전체 상태를 관찰하게 합니다. boolean·실수·문자열 id는 INVALID_ID, 거대한 양의 정수 id는 NOT_FOUND입니다. 재완료는 성공이며 실패가 다음 번호를 소비하지 않습니다.
- JAVA-PORT.md의 함수 대응과 상태 소유권을 코드와 대조하고 evidence-java.md에 본인 판단·AI에 맡긴 일·실제 명령·테스트 수·검증 범위와 미확인을 기록합니다.
완료 기준
- 학습자는 ./mvnw test로 검사합니다. 준비된 캐시에서는 ./mvnw -o -q test로 같은 테스트를 수행하고 성공 시 종료 코드 0을 확인합니다.
- 사전 준비된 Maven 캐시에서 오프라인 단위 테스트가 통과합니다.
- 잘못된 입력으로 저장소가 바뀌지 않고 반환 목록 변경이 내부 상태에 영향을 주지 않습니다.
- Java JUnit 테스트 27개가 실패·오류·건너뜀 없이 통과합니다. ContractCasesTest는 C01~C12 각각의 결과·전체 상태·초기 상태 및 명령 불변을 검사합니다.
- 추가 검사는 1·40·41 코드 포인트와 이모지·Python 공백, 실패 후 번호, 조회 스냅샷, 완료 및 재완료, 잘못된 id·거대한 정수와 응답 맵 수정의 독립성을 검사합니다.
- 기존 bash check.sh는 문서·Python 참조 모델만 검사합니다. Java 증거는 Maven 실행으로 별도 기록하며 HTTP·DB·동시 요청·운영 배포는 검증하지 않습니다.
- JAVA-PORT.md와 evidence-java.md의 설명 의미 및 의존성 판단은 사람이 확인합니다. JUnit은 문서 설명의 의미를 자동 판정하지 않습니다.
./mvnw test미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 요구사항과 실제 검증 근거를 연결해 설명합니다.
- 본인이 판단한 사항과 AI에 맡긴 사항을 구분합니다.
- 통과·실패·미확인 상태를 사실대로 기록합니다.