분류 전체보기60 일급 컬렉션 jojoldu님의 블로그 글을 참고하여 일부 재작성함. 컬렉션을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다. 일급 컬렉션 예 public class Position { private final Map positions; public Position(Map positions) { this.positions = positions; } } @Test void test() { Map carPositionMap = new HashMap(); map.put("1", "A"); map.put("2", "B"); Position carPosition = new Position(carPositionMap); // 이후로 carPosition의 positions는 불변이 유지된다. } Wrapping으로 인해 .. 2020. 3. 28. git hooks를 사용하여 commit 전에 gradle test 실행하기 Git-Hook pre-commit + gradle clean test 이 글에서 사용한 스크립트는 깃허브에서 볼 수 있습니다. Git Hooks ? 어떤 이벤트가 생겼을 때 자동으로 특정 스크립트를 실행 .git/hooks 폴더에 들어가면 여러 샘플이 있으며 그 중 pre-commit을 사용해봤다. 주의: pre-commit 파일은 서버에 저장되지 않음 /.git/hooks/pre-commit 파일에 저장 후 권한을 755로 설정한다. #!/bin/bash echo "Running Gradle clean test for errors" CWD=`pwd` MAIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd $MAIN_DIR/../../ ./gr.. 2020. 3. 26. 준비 01 - gradle build failed (No tests found) 환경 macos catalina intellij idea ultimate gradlew 4.10.3 JUnit 5 intellij에서 테스트 코드를 실행 (cmd + R) 하였으나 테스트를 찾지 못했다는 에러가 나오는 상황 에러 Testing started at 12:25 오전 ... > Task :cleanTest > Task :compileJava NO-SOURCE > Task :processResources NO-SOURCE > Task :classes UP-TO-DATE > Task :compileTestJava UP-TO-DATE > Task :processTestResources NO-SOURCE > Task :testClasses UP-TO-DATE > Task :test FAILED FAI.. 2020. 3. 12. 토비의 스프링을 읽고 막 적어보자 (4) 191024 테스트 없이는 스프링도 없다. 스프링도 테스트를 만들어가며 개발됐다. 코드에 변경사항이 없다면 테스트도 동일한 결과를 내야 한다. DB 중복 값 에러 등 외부 상태에 따라 성공/실패하면 안 된다. 스프링의 창시자인 로드 존슨은 "항상 네거티브 테스트를 먼저 만들라"는 조언을 했다. 나는 잘 되던데? 는 변명이다. 테스트 코드는 잘 작성된 기능 정의서이다. 코드로 된 설계문서를 만든다고 생각하자. 실패하는 테스트를 먼저 만들고, 테스트를 성공하게 하는 코드를 작성하는 방식의 개발 방법을 "테스트 주도 개발, TDD, Test Driven Development"라고 한다. 실패한 테스트를 성공시키기 위한 목적이 아닌 코드는 만들지 않는다. 테스트는 작성한 후 가능한 한 빨리 실행할 수 있어야 한.. 2019. 10. 25. 토비의 스프링을 읽고 막 적어보자 (3) 191023 2장 테스트 스프링이 개발자에게 제공하는 가장 중요한 가치는 객체지향과 테스트. 스프링의 핵심인 IoC와 DI는 객체지향의 근본과 가치를 손쉽게 적용하고 사용하게 도와준다. 만들어진 코드를 확신할 수 있게 해주고 변화에 유연하게 대처하는 자신감을 주는 기술이 테스트이다. 테스트하고자 하는 대상이 명확하다면 그 대상에만 집중해서 테스트하는 것이 바람직하다. 과정도 복잡해지고 원인파악도 힘들다. 작은 단위의 코드에 대해 테스트를 수행한 것을 단위 테스트라고 부른다. 단위는 작을수록 좋다. 다른 코드를 신경쓰지 않고 참여하지 않으면서 테스트가 동작하면 좋다. 수동으로 DB에 값을 저장하고 메인문을 실행하고 결과를 비교하고 이러한 작업은 번거롭다. 이를 해결하기위해 자동화된 테스트를 위한 xUnit.. 2019. 10. 23. 토비의 스프링을 읽고 막 적어보자 (2) 191021 빈 스프링이 IoC 방식으로 관리하는 오브젝트 모든 오브젝트가 빈인건 아니다. 스프링이 관리하는 오브젝트만을 칭함 빈 팩토리 말 그대로 빈을 생성, 등록, 조회 등등의 빈 관리. 바로 사용하지 않고 이를 확장한 어플리케이션 콘텍스트를 사용 어플리케이션 콘텍스트 빈 팩토리를 확장한 IoC 컨테이너. 빈 팩토리라고 부를때는 주로 빈의 생성, 제어의 관점이고 애플리케이션 콘텍스트의 경우 스프링이 제공하는 지원 기능을 모두 포함하여 이야기하는 것. 빈팩토리를 상속함. 설정 정보 (configuration metadata) 스프링의 설정정보란 애플리케이션 컨텍스트 또는 빈팩토리가 IoC를 적용하기 위해 사용하는 메타 정보. 형상정보, 청사진. 컨테이너 (IoC 컨테이너) 컨테이너라는 말 자체가 IoC.. 2019. 10. 22. 토비의 스프링을 읽고 막 적어보자 (1) 191018 어떻게 적용할 것인가를 항상 생각하며 읽을 것. 남에게 설명할 수 있기 전까지는 안다고 할 수 없다. 스프링 부트를 맛보니 스프링 실력이 모자라다고 느꼈다. 1. 개방 폐쇄 원칙. OCP Open Close Principle 클래스나 모듈은 확장에는 열려있어야 하고 수정에는 닫혀있어야 한다. 2. 단일 책임 원칙. SRP Single Responsibility Principle 하나의 클래스는 하나의 책임만 가진다. 3. 리스코프 치환 원칙 LSP Liskov Subsitution Priciple 4. ISP Interface Segregation Principle 5. DIP Dependency Inversion Principle 전략 패턴. 스프링은 객체지향적 설계 원칙과 디자인 패턴에 .. 2019. 10. 18. docker jenkins에서 mvnw 사용시 permission denied 오류 이유 : mvnw의 권한이 -rw-r--r--였다 젠킨스 컨테이너에 메이븐을 깔기 귀찮아서 메이븐 래퍼로 해결하려고 했으나 권한 없음 오류가 발생했다. 나의 경로는 /var/jenkins_home/workspace/sprigboot 여기서 ls 명령어를 실행해보면 total 56 drwxr-xr-x 6 jenkins jenkins 4096 Oct 3 16:48 . drwxr-xr-x 4 jenkins jenkins 4096 Oct 3 16:04 .. drwxr-xr-x 8 jenkins jenkins 4096 Oct 3 16:48 .git -rw-r--r-- 1 jenkins jenkins 333 Oct 3 16:04 .gitignore drwxr-xr-x 3 jenkins jenkins 4096 Oct.. 2019. 10. 4. docker-jenkins 업데이트 컨테이너에 root 접속 docker exec -it -u 0 jenkins bash젠킨스 다운로드 wget http://updates.jenkins-ci.org/download/war/2.190.1/jenkins.war 글쓰는 시점 기준 LTS 최신버전은 2.190.1 버전이었다. 참고로 가운데 버전은 '백구십'으로 읽는다. 버전 비교는 점단위로.v2.20.1 2019. 10. 4. 이전 1 ··· 3 4 5 6 7 다음