전체 글
-
가짜 객체를 이용한 테스팅 프로젝트를 진행하다 보면 여러 가지 이유로 진짜 객체를 사용하지 못할 경우가 왕왕 발생한다. 예를 들어 웹페이지가 잘 동작하는지 알려면 HttpServletRequest를 날려야 하는데 서버까지 연동돼야 해서 쉽지 않다. DB 자료를 저장해야 하는데 테스트를 위해 DB까지 동작시키는게 곤란하거나 아직 has a 관계의 객체가 만들어지지 않은 상태에서 테스트 해야하는 등 상황은 매우 다양하다. 이런 상황에서의 테스트를 위해 Stub, Mock, Spy 와 같은 가짜 객체들이 사용된다. 테스트 상황 우리는 학생의 점수를 등록하고 조회하는 시스템을 구축중이다. 이 시스템은 ScoreServiceImpl이 Has a 관계로 ScoreRepository를 사용한다. 문제는 ScoreRe..
[spock]가짜 객체를 이용한 테스팅 - 1가짜 객체를 이용한 테스팅 프로젝트를 진행하다 보면 여러 가지 이유로 진짜 객체를 사용하지 못할 경우가 왕왕 발생한다. 예를 들어 웹페이지가 잘 동작하는지 알려면 HttpServletRequest를 날려야 하는데 서버까지 연동돼야 해서 쉽지 않다. DB 자료를 저장해야 하는데 테스트를 위해 DB까지 동작시키는게 곤란하거나 아직 has a 관계의 객체가 만들어지지 않은 상태에서 테스트 해야하는 등 상황은 매우 다양하다. 이런 상황에서의 테스트를 위해 Stub, Mock, Spy 와 같은 가짜 객체들이 사용된다. 테스트 상황 우리는 학생의 점수를 등록하고 조회하는 시스템을 구축중이다. 이 시스템은 ScoreServiceImpl이 Has a 관계로 ScoreRepository를 사용한다. 문제는 ScoreRe..
2021.02.15 -
spock의 블록 Spock은 블록을 통해서 할 일들을 정리한다. 기본 블록은 아래와 같다. given / setup 테스트에 필요한 객체나 환경을 준비하는 블록으로 반드시 다른 블록들 보다 먼저 있어야 한다. 키워드 자체는 생략가능하다. when 테스트 하고 싶은 상황을 만드는 영역으로 코드를 실행하는 영역이다. then 테스트 결과를 검증하는 블록으로 여기에 작성된 코드 한줄 한줄이 모두 assert에 해당하는 문장이다. expect when과 then이 합쳐진 형태로 작은 테스트 작성 시 유용하다. cleanup 필요 시 setup의 자원을 정리한다. where 일부 데이터만 바꿔가면서 여러 번 테스틀 할 수 있게 도와주는 영역이다. given / when / then given / when / t..
[spock]기본 사용법spock의 블록 Spock은 블록을 통해서 할 일들을 정리한다. 기본 블록은 아래와 같다. given / setup 테스트에 필요한 객체나 환경을 준비하는 블록으로 반드시 다른 블록들 보다 먼저 있어야 한다. 키워드 자체는 생략가능하다. when 테스트 하고 싶은 상황을 만드는 영역으로 코드를 실행하는 영역이다. then 테스트 결과를 검증하는 블록으로 여기에 작성된 코드 한줄 한줄이 모두 assert에 해당하는 문장이다. expect when과 then이 합쳐진 형태로 작은 테스트 작성 시 유용하다. cleanup 필요 시 setup의 자원을 정리한다. where 일부 데이터만 바꿔가면서 여러 번 테스틀 할 수 있게 도와주는 영역이다. given / when / then given / when / t..
2021.02.10 -
Spock이란? Spock은 BDD(Behavior Driven Development)를 위한 테스팅 프레임워크이다. spockframework.org/ Spock What is it? Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDE spockframework.org Groovy 기술을 이용해서 작성하지만 Groovy에서..
[spock]Spock이란?Spock이란? Spock은 BDD(Behavior Driven Development)를 위한 테스팅 프레임워크이다. spockframework.org/ Spock What is it? Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDE spockframework.org Groovy 기술을 이용해서 작성하지만 Groovy에서..
2021.02.09 -
BDD와 Spock 한때 TDD(Test Driven Development)가 대세이던 때가 있었다. 하지만 최근에는 BDD(Behavior Driven Development)의 바람이 거세다. TDD와 BDD의 차이점을 아래 동영상들을 보면 대략적인 감이 올 것이다. https://www.youtube.com/watch?v=4QFYTQy47yA https://www.youtube.com/watch?v=ydddSkVz_a8 Spock에 대한 소개 이번 포스트는 Intellij 환경에서 Spock 사용법에 대해 이야기할 생각이다. 따라서 Spock이 뭔지, 어떤 장점이 있는지는 이야기 하지 않을 계획인데 아직 Spock에 대한 지식이 부족하다면 다음의 링크들을 살펴보자. woowabros.github.io..
[spock]BDD와 SpockBDD와 Spock 한때 TDD(Test Driven Development)가 대세이던 때가 있었다. 하지만 최근에는 BDD(Behavior Driven Development)의 바람이 거세다. TDD와 BDD의 차이점을 아래 동영상들을 보면 대략적인 감이 올 것이다. https://www.youtube.com/watch?v=4QFYTQy47yA https://www.youtube.com/watch?v=ydddSkVz_a8 Spock에 대한 소개 이번 포스트는 Intellij 환경에서 Spock 사용법에 대해 이야기할 생각이다. 따라서 Spock이 뭔지, 어떤 장점이 있는지는 이야기 하지 않을 계획인데 아직 Spock에 대한 지식이 부족하다면 다음의 링크들을 살펴보자. woowabros.github.io..
2021.02.08 -
build.gradle 작성 언어 build.gradle은 gradle의 init task에 의해 생성되는 파일이다. 이 파일은 그루비나 코틀린 기반으로 작성될 수 있는데 기본 파일은 그루비로 작성되어있다. 그루비는 자바 기반의 스크립트 언어로 자바를 할 수 있다면 매우 손쉽게 배워볼 수 있는 언어이다. 하지만 아무리 쉬워도 겨우 build 하기 위해 언어를 배운다는 것은 부담스러울 수 있다. 그런데 엄밀히 말하면 build.gradle은 그루비를 그대로 사용하는 것은 아니고 그루비 DSL을 사용한다. DSL은 Domain-specific languages의 약자로 말 그대로 특정 용도에 맞게 쉽게 편집한 언어로 생각하면 된다. 결론은 Groovy를 gradle에서 사용하기 위해 쉽게 만든 것이다. 그래..
[gradle]build.gradlebuild.gradle 작성 언어 build.gradle은 gradle의 init task에 의해 생성되는 파일이다. 이 파일은 그루비나 코틀린 기반으로 작성될 수 있는데 기본 파일은 그루비로 작성되어있다. 그루비는 자바 기반의 스크립트 언어로 자바를 할 수 있다면 매우 손쉽게 배워볼 수 있는 언어이다. 하지만 아무리 쉬워도 겨우 build 하기 위해 언어를 배운다는 것은 부담스러울 수 있다. 그런데 엄밀히 말하면 build.gradle은 그루비를 그대로 사용하는 것은 아니고 그루비 DSL을 사용한다. DSL은 Domain-specific languages의 약자로 말 그대로 특정 용도에 맞게 쉽게 편집한 언어로 생각하면 된다. 결론은 Groovy를 gradle에서 사용하기 위해 쉽게 만든 것이다. 그래..
2021.01.30 -
gradle을 위한 살짝 Groovy Maven의 경우 XML을 기반으로 설정을 구성하지만 gradle은 Groovy라는 녀석을 이용한다. 빌드 툴을 사용하기 위해 또다른 언어를 학습해야한다는게 부담스럽지만 다행히 자바를 이미 알고 있다면Groovy는 학습 곡선이 매우 낮다. gradle외에도 간단한 테스트 코드나 SPOCK 같은 테스트 프레임워크 등에서도 자주 사용된 발을 담가보자. Groovy는 - JVM 상에서 실행되는 스크립트 언어로 - Java와 유사한 문법 구조를 가지며 - Java와 호환성이 아주 좋다. 이번 포스트에서는 build.gradle을 편집하기위해 필요한 정도의 살짝 Groovy를 다루도록 한다. Groovy의 간단한 문법 Groovy는 자바와 비슷하니까 대충 자바처럼 써보면 되는..
[gradle]gradle을 위한 살짝 Groovygradle을 위한 살짝 Groovy Maven의 경우 XML을 기반으로 설정을 구성하지만 gradle은 Groovy라는 녀석을 이용한다. 빌드 툴을 사용하기 위해 또다른 언어를 학습해야한다는게 부담스럽지만 다행히 자바를 이미 알고 있다면Groovy는 학습 곡선이 매우 낮다. gradle외에도 간단한 테스트 코드나 SPOCK 같은 테스트 프레임워크 등에서도 자주 사용된 발을 담가보자. Groovy는 - JVM 상에서 실행되는 스크립트 언어로 - Java와 유사한 문법 구조를 가지며 - Java와 호환성이 아주 좋다. 이번 포스트에서는 build.gradle을 편집하기위해 필요한 정도의 살짝 Groovy를 다루도록 한다. Groovy의 간단한 문법 Groovy는 자바와 비슷하니까 대충 자바처럼 써보면 되는..
2021.01.30 -
intellij에서는 double shift (shift 두번 연타)로 모든 설정을 검색할 수 있다. Settings > Font Live Templatecode assist를 위한 약어(abbreviation) 등록 기본 encoding 설정Edit Custom VM Options를 실행하고 idea64.exw.vmoptions라는 설정 파일을 수정할 수 있는데 하단에 다음처럼 옵션을 추가한다.# 추가-Dfile.encoding=UTF-8intellij의 재시작이 필요하다. 실행 옵션 변경언제부턴가 intellij의 실행 옵션이 gradle task로 변경되어 단위테스트 실행 시 [no tests found for given includes xxxx] 오류가 발생한 다면 아래 화면에서 Run Test..
[intellij] 기본 설정intellij에서는 double shift (shift 두번 연타)로 모든 설정을 검색할 수 있다. Settings > Font Live Templatecode assist를 위한 약어(abbreviation) 등록 기본 encoding 설정Edit Custom VM Options를 실행하고 idea64.exw.vmoptions라는 설정 파일을 수정할 수 있는데 하단에 다음처럼 옵션을 추가한다.# 추가-Dfile.encoding=UTF-8intellij의 재시작이 필요하다. 실행 옵션 변경언제부턴가 intellij의 실행 옵션이 gradle task로 변경되어 단위테스트 실행 시 [no tests found for given includes xxxx] 오류가 발생한 다면 아래 화면에서 Run Test..
2021.01.30 -
Comparing identical expressions Comparing identical expression은 다음과 같은 문장을 작성할 때 이클립스에서 표시되는 warning 메시지이다. 어차피 완벽하게 동일한 결과인데 왜 확인하려는건지 모르겠다는 정도로 해석해볼 수 있다. 그런데 위 메시지를 쫒다가 stackoverflow.com에서 재밋는걸 발견하고 포스팅 해본다. 재밋는거 하나 추가요.. int a = 1; int b = 3; System.out.println((a == (a = b)) +" : "+a+" : "+b); // false : 3 : 3 a = 1; System.out.println(((a = b) == a)+" : "+a+" : "+b); // true : 3 : 3 당연히 최강..
Comparing identical expressionsComparing identical expressions Comparing identical expression은 다음과 같은 문장을 작성할 때 이클립스에서 표시되는 warning 메시지이다. 어차피 완벽하게 동일한 결과인데 왜 확인하려는건지 모르겠다는 정도로 해석해볼 수 있다. 그런데 위 메시지를 쫒다가 stackoverflow.com에서 재밋는걸 발견하고 포스팅 해본다. 재밋는거 하나 추가요.. int a = 1; int b = 3; System.out.println((a == (a = b)) +" : "+a+" : "+b); // false : 3 : 3 a = 1; System.out.println(((a = b) == a)+" : "+a+" : "+b); // true : 3 : 3 당연히 최강..
2021.01.16