본문 바로가기

Develop43

코드 테스트에 관한 약어(FIRST, Right-BICEP, CORRECT) FIRST : 좋은 테스트 조건이란? [F]ast 테스트는 빠르게 동작해야 한다. 느린 것에 의존하는 코드를 최소화하자. [I]solated 직접적 혹은 간접적으로 테스트 코드와 상호 작용하는 코드가 많을수록 문제가 발생할 소지가 늘어난다. 다른 단위 테스트에 의존하지 않는 결합도를 낮은 테스트 코드를 작성하자. 각 테스트가 작은 양의 동작에만 집중하면 독립적인 테스트 코드로 유지하기 쉽다. 테스트 코드에도 단일 책임 원칙을 적용하자. 테스트 메서드가 하나 이상의 이유로 깨진다면 테스트를 분할하는 것을 고려하자. [R]epeatable 테스트는 실행할 때마다 결과가 같아야 한다. 반복 가능한 테스트를 만들려면 직접 통제할 수 없는 외부 환경에 있는 항목들과 최대한 격리시켜야 한다. [S]elf-valid.. 2023. 2. 16.
SOLID 클래스 설계 원칙 단일 책임 원칙 (Single Responsibility Principle) 클래스는 변경할 때 한 가지 이유만 있어야 한다. 모든 클래스는 하나의 책임만 가진다. 개방 폐쇄 원칙 (Open / Closed Principle) 클래스는 확장에는 열려 있고 변경에는 닫혀 있어야 한다. 기존 클래스의 변경은 최소화한다. 리스코프 치환 원칙 (Liskov Substitution Principle) 하위 타입은 반드시 상위 타입을 대체할 수 있어야 한다. 파생 클래스로도 별다른 이해 없이사용 가능해야 한다. 인터페이스 분리 원칙 (Interface Segregation Principle) 클라이언트는 필요하지 않는 메서드에 의존하면 안 된다. 여러 개의 범용 인터페이스로 분할하라. 의존성 역전 원칙 (Depen.. 2023. 2. 13.
[Git] 브랜치 만들기와 전환하기 (branch, checkout) 브랜치란? 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다. 또한 이렇게 만들어진 브랜치는 다른 브랜치와 Merge/Rebase를 통해 새로운 하나의 브랜치로 모을 수 있다. 현재 선택된 브랜치가 아닌 다른 브랜치에서 작업하고 싶을 때는 'checkout' 명령어를 실행하여 다른 브랜치로 전활할 수 있다. 'HEAD'라는 키워드를 사용해 현재 사용 중인 브랜치의 선두 부분을 나타낸다. 커밋하지 않은 변경 내용이 인덱스와 작업 트리에 남아 있는 채로 다른 브랜치로 전환하면, 그 변경 내용은 기존 브랜치가 아니 전환된 브랜치에서 커밋할 수 있다. 단 전환된 브랜치에서도 한 차례 변경 .. 2023. 2. 9.
[Spring Boot] 액추에이터로 내부 들여다보기 - 1 다루는 내용 - 액추에이터 웹 엔드포인트 - 액추에이터 조정 액추에이터의 엔드포인트 살펴보기 애플리케이션을 먼저 기동한 후 http://localhost:8080/actuator 에 접속하면 웹 환경의 기본으로 적용되는 엔드포인트를 확인할 수 있다. 기본적으로 웹 환경에서는 health, info가 제공된다. { "_links": { "self": { "href": "http://localhost:8080/actuator", "templated": false }, "health": { "href": "http://localhost:8080/actuator/health", "templated": false }, "info": { "href": "http://localhost:8080/actuator/inf.. 2023. 2. 7.
[Spring Boot] 스프링 부트 테스트하기 다루는 내용 - 통합 테스트 - 서버에서 애플리케이션을 테스트하는 방법 - 스프링 부트 테스트 유틸리티 ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 6년 전 기술이므로 현재 용어가 많이 바뀌었다. 흐름만 파악하고 공식문서를 참고하여 개발하도록하자. https://spring.io/guides/gs/testing-web/ ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 통합 테스트를 위한 자동 구성 스프링 애플리케이션 컨텍스트를 로드하고 테스트 클래스에 자동으로 주입하는 기능을 확성화하는 JUnit 클래스 러너인 SpringJUnit4ClassRunner를 제공하는 형태로 통합 테스트를 지원한다. @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationC.. 2023. 2. 5.
[Spring Boot] 구성을 사용자화하기 다루는 내용 - 자동 구성된 빈을 오버라이드 하는 방법 - 외부 프로퍼티를 이용하여 구성하는 방법 스프링 부트 자동 구성 오버라이드 하기 스프링 부트가 미리 구성한 빈을 명시적으로 오버라이드 하는 방법과 프로퍼티를 세밀하게 구성하는 방법을 알아본다. 대체로 자동 구성된 빈은 원하는 것을 정확하게 제공하므로 오버라이드할 필요가 없다. 하지만 자동 구성으로 원하는 기능이 잘 작동하지 않을 때도 있다. 예를 들어 보안 같은 경우 한 번에 완성할 수 없고 상세한 보안 요구 사항을 오버라이드해야 한다. 대표적으로 spring security 가 있다. 다양한 자동 구성을 커스텀하여 사용할 수 있다. package readinglist; import ... // 생략 @Configuration @EnableWebS.. 2023. 2. 3.
[Git] 원격 저장소와 연결하기 (remote) remote 명령어는 원격 저장소를 제어하는 키워드이다. git remote 등록된 원격 저장소의 목록을 보여준다. git remote add [remote name] [repository url] 대개는 Git Hub라는 원격 저장소에서 clone 후 개발을 진행하겠지만 클론하지 않고 원격 저장소와 연결하는 방법이 있다. [repository url]의 alias로 [remote name]으로 설정한다. [remote name]으로는 기본적으로 origin을 많이 쓴다. 이후 코드블럭의 [remote name]은 모두 origin으로 표기하겠다. git remote remove origin 연결된 원격 저장소를 제거한다. git remote set-url origin [repository url]​ a.. 2023. 1. 31.
[Git] 깃 옵션 설정하기 (config) git config 명령으로 옵션을 보거나 값을 바꿀 수 있다. Git의 옵션에는 지역 옵션, 전역 옵션, 시스템 환경 옵션 세 종류가 있다. 지역 옵션은 현재 Git 저장소에서만 유효한 옵션이고, 전역 옵션은 현재 사용자를 위한 옵션이고, 시스템 환경 옵션은 PC 전체의 사용자를 위한 옵션이다. git config --local [option] git config --local [option] [new value] git config --local --unset [option] git config --global [option] git config --global [option] [new value] git config --global --unset [option] git config --system .. 2023. 1. 28.