everydayminder
stub, mock, spy의 차이는? 테스트 코드를 작성하다 보면, 한동안 Stub과 Mock의 차이를 생각하지 않고 써왔던 것 같다. Martin Fowler의 원본 글을 읽어보면서 내용을 정리해둬야 나중에 방향성을 잡을 때 도움이 될 것 같다. Mocks Aren't Stubs by Martin Fowler 아래 링크가 원문이다. https://martinfowler.com/articles/mocksArentStubs.html 용어 정리 + 개인 의견 원문 글에도 자세히 나오지만, 원문에 소개된 개념을 정리한다. Meszaros uses the term Test Double as the generic term for any kind of pretend object used in place of a ..
본 글에서는 SpringBoot와 Spock Test Framework를 연동하는 방법에 대해 소개한다. 구성 환경 (의존성) SpringBoot: 2.4.2 Default JUnit: 5.x Spock: 1.3 Groovy: 2.5 만약, 이후에 다른 버전으로 테스트 한다면, 그에 맞는 설정 방법을 다시 확인해야할 것이다. 기본 틀잡기 Spring Initializer(https://start.spring.io/)를 활용하여, 일단 기본적인 프로젝트를 다음과 같이 설정해 보았다. plugins { id 'org.springframework.boot' version '2.4.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java..
지난 글에 설정한 바대로 ant task를 정상적으로 진행했다면, ant task로 emma.report 태스크를 수행했을 때, coverage.html과 coverage.xml이 생성되었을 것이다. 참고로, 생성된 coverage.html을 살펴보자. 해당 패키지의 구성중, 클래스/메소드/블럭/라인 기준으로 어느 정도가 test로 커버 되고 있는지를 보여준다. 패키지 이름을 클릭하면, 패키지에 포함된 클래스들이 나타나고, 이 클래스들이 어느 정도 test로 커버되고 있는지 보여준다. 이 중, 아무 클래스나 또 클릭하게 되면, 클래스내의 메소드들이 test로 어떻게 커버되고 있는지 현황을 자세하게 보여주게 된다. 이 결과물은, 별도의 ant task를 수동으로 실행시켜 얻은 결과물이므로, 이제 hudso..
지난 글t에서 hudson에 JUnit 테스트를 수행하는 방법에 대해 소개하였다. 물론, 코드의 품질은 어떤 테스트 코드를 어떻게 작성하느냐에 코드의 신뢰도가 달라진다. 그렇다면, 좋은 테스트는 테스트 케이스의 수에 단순히 비례할까? 두 말할 필요 없이 얼마나 양질의 테스트가 어떻게 수행되었는지가 중요할 것이다. 본 포스트에서 말하고자 하는 metric은 테스트의 커버리지(coverage)이다. 즉, 테스트의 커버리지가 높은 프로젝트 코드들은 검증을 거친 부분이 많으므로, 상대적으로 양질이라고 볼 수 있다. Emma는 프로젝트 코드와, 프로젝트 코드를 테스트하는 테스트 코드를 조합하여 비교함으로써, 주어진 테스트 코드가 원본 소스 코드에 대해 어느 정도의 커버리지를 갖는지를 조사해 준다. Emma는 어디..
소스의 품질을 높이기 위해, Junit을 사용하여 테스트를 자동화 하자. 본 포스트에서는 hudson에 junit 테스트를 태스크로 선언하여 빌드시 테스트를 실시하고, 그 결과를 hudson으로 리포트 하도록 설정하고자 한다. hudson에 등록한 프로젝트로부터 configure를 설정하면, 하단에 와 같이 Junit 테스트 결과를 리포트하겠다는 항목이 있다. 이 기능을 사용하기 위해, 기존에 선언한 build.xml (ant script)에 Junit 테스트 컴파일/ 수행을 하도록 추가할 것이다. 물론, 본인이 작성한 코드를 기반으로 Junit 코드들이 작성되어 있어야 한다. JUnit 테스트를 수행하고 리포트를 생성하기 위해, 기존에 작성한 build.xml을 다음과 같이 task를 추가한다. tes..
Twitter API는 http://apiwiki.twitter.com/ 에서 세부 정보를 찾아볼 수 있다. 합병되기 전/후의 두 개의 회사가 연관되어 있어, 두 개 (혹은 세 개)의 API 그룹으로 구성되어 있다. HTTP 기반의 프로토콜인데, 여러 언어로 라이브러리가 공개되어 있다. 그 중, java로 공개된 라이브러리로는 Twitter4J, java-twitter, jtwitter 등이 있으며, 사용자 층이 두텁고, 업데이트가 최근까지 가장 활발한 Twitter4J를 선택하여 일부 메소드를 테스트해 보았다. 1. Twitter4J의 공식 사이트 : http://twitter4j.org/ 2. Twitter4J의 활용예 (* YouTube 동영상 참조 : http://www.youtube.com/wa..