tools & libs
-
최근에 Java를 이용한 웹 애플리케이션 프로젝트를 진행할 때는 Spring을 때 놓고 생각할 수 없다. JUnit에서는 Extension Model을 이용해서 다른 시스템과의 연결이 가능한데 연동이 되어야 Spring Framework와 소통하며 @Autowired등을 통해 빈을 사용할 수 있다. 이번 포스트에서는 Spring Framework와 JUnit을 연동하는 방법에 대해 살펴보자. Spring Legacy Project와의 연동 먼저 spring legacy project에서의 설정 방법을 살펴보자. 의존성 설정 먼저 spring-test에 대한 의존성과 junit 이 필요하다. org.springframework spring-test 5.3.18 test org.junit.jupiter ju..
[spring test] 1. spring과 junit최근에 Java를 이용한 웹 애플리케이션 프로젝트를 진행할 때는 Spring을 때 놓고 생각할 수 없다. JUnit에서는 Extension Model을 이용해서 다른 시스템과의 연결이 가능한데 연동이 되어야 Spring Framework와 소통하며 @Autowired등을 통해 빈을 사용할 수 있다. 이번 포스트에서는 Spring Framework와 JUnit을 연동하는 방법에 대해 살펴보자. Spring Legacy Project와의 연동 먼저 spring legacy project에서의 설정 방법을 살펴보자. 의존성 설정 먼저 spring-test에 대한 의존성과 junit 이 필요하다. org.springframework spring-test 5.3.18 test org.junit.jupiter ju..
2023.11.23 -
가짜 객체를 이용한 테스팅 프로젝트를 진행하다 보면 진짜 객체를 사용하지 못하거나 사용하지 말아야 할 경우가 왕왕 발생한다. Service가 Repository를 호출하는 구조의 애플리케이션에서 Service를 테스트한다고 생각해보자. 만약 Service는 만들어졌는데 Repository는 아직 개발 중인 상황이라면 Repository가 개발이 완료될 때까지 Service에 대한 테스트를 미뤄야 할까? 또는 Service에서 Repository를 호출하는 과정에서 오류가 발생했다면 누구의 문제일까? 이처럼 Service의 동작이 Repository에 영향을 받는 게 맞을까? 이런 경우 Repository는 차라리 없다고 생각하고 가짜를 사용하는것이 유리하다. JUnit은 이런 상황에서 Mockito fr..
[junit] jupiter 4. 가짜 객체를 활용한 테스트가짜 객체를 이용한 테스팅 프로젝트를 진행하다 보면 진짜 객체를 사용하지 못하거나 사용하지 말아야 할 경우가 왕왕 발생한다. Service가 Repository를 호출하는 구조의 애플리케이션에서 Service를 테스트한다고 생각해보자. 만약 Service는 만들어졌는데 Repository는 아직 개발 중인 상황이라면 Repository가 개발이 완료될 때까지 Service에 대한 테스트를 미뤄야 할까? 또는 Service에서 Repository를 호출하는 과정에서 오류가 발생했다면 누구의 문제일까? 이처럼 Service의 동작이 Repository에 영향을 받는 게 맞을까? 이런 경우 Repository는 차라리 없다고 생각하고 가짜를 사용하는것이 유리하다. JUnit은 이런 상황에서 Mockito fr..
2023.11.23 -
이제 단정문까지 학습했으므로 쓸만한 테스트를 만들어보자. 이번 포스트에서는 given-when-then 패턴을 이용한 간단한 단위 테스트를 실행해 본다. given-when-then 패턴 흔히 사용되는 단위테스트 패턴으로 행동 주도 개발(Behavior Driven Development: BDD)이 있는데 여기서는 테스트 코드 작성 단계를 given - when - then 패턴으로 작성하기를 권장한다. given: 테스트를 위해 필요한 상황 준비(이런 상황, 객체, 데이터가 주어졌을 때) when: 테스트하는 메서드 실행(어떤 메서드를 실행했다면) then: 테스트 결과 검증(어떠한 결과가 나와야 한다.) JUnit은 애초에 BDD를 위해 만들어진 녀석은 아니기 때문에 이 패턴이 강제되는 내용은 아니다..
[junit] jupiter 3. 단위테스트 작성 기법이제 단정문까지 학습했으므로 쓸만한 테스트를 만들어보자. 이번 포스트에서는 given-when-then 패턴을 이용한 간단한 단위 테스트를 실행해 본다. given-when-then 패턴 흔히 사용되는 단위테스트 패턴으로 행동 주도 개발(Behavior Driven Development: BDD)이 있는데 여기서는 테스트 코드 작성 단계를 given - when - then 패턴으로 작성하기를 권장한다. given: 테스트를 위해 필요한 상황 준비(이런 상황, 객체, 데이터가 주어졌을 때) when: 테스트하는 메서드 실행(어떤 메서드를 실행했다면) then: 테스트 결과 검증(어떠한 결과가 나와야 한다.) JUnit은 애초에 BDD를 위해 만들어진 녀석은 아니기 때문에 이 패턴이 강제되는 내용은 아니다..
2023.11.23 -
단위테스트의 목적이 "동작 결과가 내가 예상하는 값과 동일한가?"를 테스트하는 것이기 때문에 assertion 즉 단정문을 통한 결과 검증은 필수적인 항목이다. junit 5에서는 org.junit.jupiter.api.Assertions 클래스에 다양한 assertion 메서드들을 static 하게 준비해 두었다. 다음 클래스의 메서드가 잘 동작하는지 테스트해보자. class Calculator { public int add(int a, int b) { return a + b; } public int divide(int a, int b) { return a / b; } } 일반적인 assertion standard assertion 대부분의 assertion 메서드들은 긍정과 부정이 쌍으로 존재한다. ..
[junit] jupiter 2. assertion단위테스트의 목적이 "동작 결과가 내가 예상하는 값과 동일한가?"를 테스트하는 것이기 때문에 assertion 즉 단정문을 통한 결과 검증은 필수적인 항목이다. junit 5에서는 org.junit.jupiter.api.Assertions 클래스에 다양한 assertion 메서드들을 static 하게 준비해 두었다. 다음 클래스의 메서드가 잘 동작하는지 테스트해보자. class Calculator { public int add(int a, int b) { return a + b; } public int divide(int a, int b) { return a / b; } } 일반적인 assertion standard assertion 대부분의 assertion 메서드들은 긍정과 부정이 쌍으로 존재한다. ..
2023.11.23 -
이번 포스트에서는 단위테스트 자동화를 위한 junit에 대해서 살펴보자. JUnit 5 User Guide JUnit 5 User Guide Although the JUnit Jupiter programming model and extension model will not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and cus junit.org 테스트 자동화와 JUnit 테스트와 자동화 필요성 테스트의 중요성은 프로그래밍 분야에서 언제나..
[junit] jupiter 1. 기본 설정 및 활용이번 포스트에서는 단위테스트 자동화를 위한 junit에 대해서 살펴보자. JUnit 5 User Guide JUnit 5 User Guide Although the JUnit Jupiter programming model and extension model will not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and cus junit.org 테스트 자동화와 JUnit 테스트와 자동화 필요성 테스트의 중요성은 프로그래밍 분야에서 언제나..
2023.11.23 -
logback과 같은 logging 시스템을 사용할 때 패키지 별로 별도의 로거를 사용하기 위해서 아래와 같이 logger를 추가할 수 있다. 즉 기본적으로는 info level의 log를 출력하고 xyz로 시작하는 패키지는 debug를 적용하고 싶다는 의도이다. 하지만 위와 같이 작업한 경우 슬프게도 log는 두 번씩 나오게 된다. [Quietjun:] [DEBUG] [x.q.m.j.m.r.JusoRepository.parse- 57] 주소 정보: 20551 [03-24 09:21:52] [DEBUG] [x.q.m.j.m.r.JusoRepository.parse- 57] 주소 정보: 20551 기본적으로 logback은 상위 logger(root)로 하위(name=xyz)의 속성들이 추가된다. 따라서 ..
[logging] logback 사용 시 로그 메시지 중복 출력 문제 처리logback과 같은 logging 시스템을 사용할 때 패키지 별로 별도의 로거를 사용하기 위해서 아래와 같이 logger를 추가할 수 있다. 즉 기본적으로는 info level의 log를 출력하고 xyz로 시작하는 패키지는 debug를 적용하고 싶다는 의도이다. 하지만 위와 같이 작업한 경우 슬프게도 log는 두 번씩 나오게 된다. [Quietjun:] [DEBUG] [x.q.m.j.m.r.JusoRepository.parse- 57] 주소 정보: 20551 [03-24 09:21:52] [DEBUG] [x.q.m.j.m.r.JusoRepository.parse- 57] 주소 정보: 20551 기본적으로 logback은 상위 logger(root)로 하위(name=xyz)의 속성들이 추가된다. 따라서 ..
2023.11.23 -
이번 포스트에서는 docker desktop을 이용해서 redis와 redisinsight를 설치해보자. redis 및 redis insight 설치 이미지 검색 하도 간만에 쓰다 보니 docker desktop의 화면이 많이 바뀐듯 하지만 사용법은 비슷했다. docker desktop 상단의 search에서 redis를 검색해서 추가한다. 필자는 맨 상단의 redis를 설치해 주었다. 다음으로 redis의 client인 redisinsight를 검색해보자. 이때 일부 툴은 버전이 너무 낮아서 통신에 문제가 있었다. 중간쯤에 있는 muicoder/redisinsight가 오류 없이 잘 동작한다. 이미지로 container 생성 actions에서 Run 버튼을 클릭하면 Optional settings 화면..
[docker] 06. redis 및 redisinsight 설치이번 포스트에서는 docker desktop을 이용해서 redis와 redisinsight를 설치해보자. redis 및 redis insight 설치 이미지 검색 하도 간만에 쓰다 보니 docker desktop의 화면이 많이 바뀐듯 하지만 사용법은 비슷했다. docker desktop 상단의 search에서 redis를 검색해서 추가한다. 필자는 맨 상단의 redis를 설치해 주었다. 다음으로 redis의 client인 redisinsight를 검색해보자. 이때 일부 툴은 버전이 너무 낮아서 통신에 문제가 있었다. 중간쯤에 있는 muicoder/redisinsight가 오류 없이 잘 동작한다. 이미지로 container 생성 actions에서 Run 버튼을 클릭하면 Optional settings 화면..
2023.11.15 -
점점 눈이 침침해지면서 작은 글씨 읽기가 부담스러워진다면.. eclipse font 설정 기본 font 설정 일반적으로 elcipse에서 폰트 크기를 키우기 위해서는 설정 > General > Appearance > Colors and Fonts에서 수정할 대상 메뉴를 선택해서 변경하면 된다. theme에서 변경 하지만 간혹 메뉴가 없는 경우가 있다. 이클립스에는 있지만 STS에는 없기도 하고. 이런 경우 직접 theme를 변경하는 방법이 있다.! root/plugins/org.eclipse.ui.themes_xxx/css/e4_default_[os_name].css에는 CSS로 툴에 대한 스타일 정보가 저장되어있다. 이 부분을 원하는 대로 수정하면 프로그램 전체를 수정할 수 있다.(이런 식으로 스타일을..
[eclipse] UI 폰트 크기점점 눈이 침침해지면서 작은 글씨 읽기가 부담스러워진다면.. eclipse font 설정 기본 font 설정 일반적으로 elcipse에서 폰트 크기를 키우기 위해서는 설정 > General > Appearance > Colors and Fonts에서 수정할 대상 메뉴를 선택해서 변경하면 된다. theme에서 변경 하지만 간혹 메뉴가 없는 경우가 있다. 이클립스에는 있지만 STS에는 없기도 하고. 이런 경우 직접 theme를 변경하는 방법이 있다.! root/plugins/org.eclipse.ui.themes_xxx/css/e4_default_[os_name].css에는 CSS로 툴에 대한 스타일 정보가 저장되어있다. 이 부분을 원하는 대로 수정하면 프로그램 전체를 수정할 수 있다.(이런 식으로 스타일을..
2023.11.14