전체 글
-
JaCoCo와 SonarQube 연동하기공부일기 2021. 8. 11. 19:10
** 소나큐브 설정이 완료된 상황이라 가정하고 진행합니다. 소나큐브가 완료됐다면 젠킨스에 소나큐브 프로젝트가 생성되어 있을 것이다. 구성 탭을 누르고 build 탭으로 간다. Task 설정하는 부분을 다음과 같이 변경한다. clean build sonarqube -Dsonar.projectKey={프로젝트 이름} -Dsonar.host.url={sonarQube 서버} -Dsonar.login={발급받은 토큰} -Dsonar.github.repository=${repository} -Dsonar.github.endpoint=https://api.github.com -Dsonar.github.pullRequest=${pr} -Dsonar.github.disableInlineComments=true -Dso..
-
JaCoCo(Java Code Coverage) 적용하기공부일기 2021. 8. 7. 21:02
JaCoCo란? JaCoCo is a free code coverage library for Java, which has been created by the EclEmma team based on the lessons learned from using and integration existing libraries for many years - JaCoCo Jacoco (Java Code Coverage) 자바 코드 커버리지를 체크하는 데 사용되는 오픈소스 라이브러리입니다. 다음과 같은 특징 덕에 코드 커버리지를 쉽게 확인하고, 관리할 수 있도록 도와줍니다. Jacoco의 특징 Line, Branch Coverage를 제공한다. 코드 커버리지 결과를 파일 형태로 저장할 수 있다. html, xml, csv..
-
Spring REST Docs 적용공부일기/스프링 2021. 7. 26. 18:06
팀의 API 문서 자동화 프로덕션 코드 작성 전 API 명세를 맞추기 위해 MockMvc 활용 Spring REST Docs는 RESTful 서비스의 문서화를 도와주는 도구이다. Spring REST Docs는 문서 작성 도구로 기본적으로 Asciidoctor를 사용해 HTML을 생성한다. 필요한 경우 Markdown 을 사용하도록 변경할 수 있으나 편의를 위해 Asciidoctor로 작성했다. Spring REST Docs는 Spring MVC의 테스트 프레임 워크 또는 Rest Assured 3로 작성된 테스트 코드에서 생성된 Snippet을 사용한다. 테스트 기반 접근 방식은 서비스 문서의 정확성을 보장해준다. Snippet이 올바르지 않을 경우 테스트가 실패하기 때문이다. Spring REST D..
-
NAVER LOGIN API 연동공부일기 2021. 7. 19. 17:01
기본 정보 Client ID Client Secret 서비스 URL Callback URL State 소셜로그인의 과정 소셜로그인의 과정은 크게 3가지로 볼 수 있다. 인가코드 받기 토큰 받기 리소스(회원정보) 받기 인가코드 받기 네이버 개발자센터를 통해 서비스를 등록하고, Client ID와 Client Secret을 발급 받는다. 네이버로부터 제공받고자 하는 사용자 정보를 필수, 추가 설정으로 받아올 수 있다. 일단 개발환경에서 테스트할 예정이기 때문에 localhost:8080으로 지정했다. 설정 후 확인을 누르면 네이버에서 Client ID와 Client Secret을 발급해준다. Client Secret의 경우 외부에 노출되어선 안 된다. 서비스의 Client ID, redirect_uri(Ca..
-
좋은 객체 지향 설계의 5가지 원칙(SOLID)공부일기/Java 8 2021. 6. 21. 19:15
1. SRP(Single Responsibility Principle) 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것이 모호한데, 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것 ex) UI 변경, 객체의 생성과 사용을 분리 2. OCP(Open/Closed Principle) 개방-폐쇄 원칙 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성을 활용한다. 역할과 구현의 분리 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현 문제점 구현 객체를 변경하려면 클라이언트 코드를 변경해야 한다. 분명 다형성을 사용했지만 OCP를 지킬 수 없다. -> 객체를 생성하고,..
-
토비의 스프링 2. 테스트공부일기/스프링 2021. 5. 16. 14:21
UserDaoTest 다시보기 테스트의 유용성 테스트란 내가 예상하고 의도했던 대로 코드가 정확하게 동작하는지 확인해 만든 코드를 확신할 수 있게 해주는 작업이다. 작은 단위의 테스트 테스트하고자 하는 대상이 명확하다면 그 대상에만 집중해서 테스트하는 것이 바람직하다. 테스트는 가능하면 작은 단위로 쪼개서 해야 정확한 원인을 찾기 쉽다.(테스트의 관심사 분리) 단위 테스트 단위 테스트에서 단위는 그 크기와 범위가 어느 정도인지 정확하게 정해진 건 아니다. 크게봐서 사용자 관리 기능을 하나의 단위로 볼 수도 있고, 작게 보면 add()와 같은 메소드 하나를 단위라고 생각할 수도 있다. 충분히 하나의 관심에 집중해 효율적으로 테스트할 만한 범위의 테스트를 단위 테스트라 할 수 있다. 일반적으로 단위는 작을수..
-
토비의 스프링 - 1. 오브젝트와 의존관계(2)공부일기/스프링 2021. 5. 13. 00:39
스프링의 IoC 오브젝트 팩토리를 이용한 스프링 IoC 빈: 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트. 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주는 오브젝트 빈 팩토리(애플리케이션 컨텍스트): 빈의 생성과 관계 설정 같은 제어를 담당하는 오브젝트 @configuration: 스프링이 빈 팩토리를 위한 오브젝트 설정을 담당하는 클래스라고 인식하게 만드는 애노테이션 getBean(): ApplicationContext가 관맇는 오브젝트를 요청하는 메소드. 파라미터 값으로 등록된 빈의 이름과 리턴타입(클래스)을 전달한다. 애플리케이션 컨텍스트의 동작방식 애플리케이션 컨텍스트는 IoC를 적용해 관리할 모든 오브젝트에 대한 생성과 관계설정을 담당한다. 생성정보와 연관관계 정보는 ..
-
토비의 스프링 - 1. 오브젝트와 의존관계(1)공부일기/스프링 2021. 5. 1. 16:54
초난감 DAO JDBC를 이용하는 작업의 일반적인 순서 DB 연결을 위한 Connection을 가져온다. SQL을 담은 Statement를 만든다 만들어진 Statement를 실행한다. 조회의 경우 SQL 쿼리의 실행 결과를 ResultSet으로 받아서 정보를 저장할 오브젝트에 옮겨준다. 작업 중에 생성된 Connection, Statement, ResultSet 같은 리소스는 작업을 마친 후 반드시 닫아준다. JDBC API가 만들어내는 예외를 잡아서 직접 처리하거나, 메소드에 throws를 선언해서 예외가 발생하면 메소드 밖으로 던지게 한다. UserDao DAO의 분리 관심사의 분리 개발자가 객체를 설계할 때 가장 염두에 둬야 할 사항은 미래의 변화를 어떻게 대비할 것인가이다. 가장 좋은 대책은 변..