Java 7

테스트 하기 쉬운 코드 && 테스트 범위와 종류

테스트가 어려운 코드● 하드 코딩된 경로 : 해당 경로에 파일이 반드시 위치해야함● 의존 객체를 직접 생성● 정적 메서드 사용● 실행 시점에 따라 달라지는 결과 ○ LocalDate.now() 혹은 Random 사용하는 코드● 역할이 섞여 있는 코드● 메서드 중간에 소켓 통신 코드 포함 +) 소켓 통신이나 HTTP 통신의 경우 실제를 대체할 서버를 로컬에 띄워서 처리 가능 (서버 수준의 대역)● 콘솔에서 입력을 받거나 결과를 콘솔에 출력● 테스트 대상이 사용하는 의존 대상 클래스나 메서드가 final : 대역으로 대체하기 어려움● 테스트 대상의 소스를 소유하고 있지 않아 수정이 어려움테스트 가능한 설계테스트가 어려운 주된 이유 = 의존하는 코드를 교체할 수 있는 수단이 없음 ●..

Java 2025.10.14

TDD로 기능 추가해보기

원래 어느정도 기능이 구현되어 있던 간단한 게시판 프로젝트에 TDD를 이용해서 새로운 기능을 추가해보았다 * 기존의 회사 컴은 java 1.8 버전을 사용중이라 이 프로젝트의 실행을 위해서는 java-sdk를 version17로 변경해준다!File → Settings → Build Tools → Gradle → Gradle JVM 내가 추가해볼 기능은 바로 댓글 좋아요 기능이다! 이때, commentLike 도메인 정도는 먼저 작성하려고 했었는데 찾아보니, TDD의 경우 도메인 코드보다 테스트 코드가 먼저!즉, CommentLike 도메인 클래스를 먼저 만드는 것이 아니라, "이 클래스가 어떤 동작을 해야 하는지"를 테스트 코드로 먼저 정의하는 것이 출발점이라고 한다테스트 작성 (Red 단계)아직 Com..

Java 2025.09.24

TDD 시작하기

나는 IntelliJ와 Maven을 이용해서 할 예정이다...!일단 먼저 JUnit 설정을 해야하는데, 프로젝트 하나를 새로 생성해주고, JUnit5 라이브러리를 추가해주면 된다.라이브러리 추가의 경우,[File] → [Project Structrue ...] 메뉴를 통해서 생성해주면 된다 org.juni.jupiter:junit-jupiter:5.5.0 을 입력하라고 하는데, 이렇게 하면 Found:0 으로 검색이 안된다....따라서, 아래와 같이 검색해주어야 한다. 그리고 클래스를 추가해서 테스트 코드를 실행하면, 잘 실행이 되는 것을 확인할 수 있다. 이제 메이븐 프로젝트에서 JUnit을 설정해보자.이를 위해서 pom.xml 파일에 JUnit5를 위한 의존성을 추가해주어야 한다. TDD : Test..

Java 2025.09.09

스프링 데이터 JPA

스프링 데이터 JPA = 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트CRUD를 처리하기 위한 공통 인터페이스 제공 org.springframework.data.jpa.repository.JpaRepository리포지토리 개발 시, 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입해줌➡️ 데이터 접근 계층을 개발 시, 구현 클래스 없이 인터페이스만 작성해도 개발 완료 가능스프링 데이터 JPA를 사용하기 위해서는 'spring-data-jpa' 라이브러리가 필요함 스프링 데이터 프로젝트- 스프링 데이터 JPA는 스프링 데이터 프로젝트의 하위 프로젝트들 중 하나. 이는 다양한 데이터 저장소에 대한 접근을 추상화하여 개발자의 편의를 제공..

Java 2025.08.17

나를 위한 클래스와 객체, 상속 부분 내용 정리

생성자 : 객체가 생성될 때 초기화를 위해 실행되는 메소드 - 리턴타입 지정불가 this 레퍼런스 : 메소드 안에서 사용됨 / 객체 자신에 대한 레퍼런스 > this 다른 메소드 호출 시 객체 자신의 레퍼런스 전달 / 메소드가 객체 자신의 레퍼런스를 반환할 때 > this.멤버 객체의 멤버변수와 메소드 변수의 이름이 같은 경우 > this() 생성자가 클래스 내의 다른 생성자 호출할 경우 메소드 호출 시 객체가 전달되는 경우, 객체에 대한 레퍼런스만 전달됨(배열도 동일) 메소드 오버로딩(method overloading) : 클래스 내에 이름이 같지만 매개 변수의 타입이나 개수가 서로 다른 여러 개의 메 소드 선언 (non-static 멤버 : 각 개체마다 별도로 생성 - 인스턴스 멤버) static 멤..

Java 2023.05.16