티스토리 뷰

CI,CD/Jenkins

Jenkins에 JaCoCo 연동하기

호형 2020. 4. 29. 14:24

JaCoCo (Java Code Coverage)는 품질 측정 도구중 하나로 동적 소스 분석 툴에 해당한다. 쉽게 설명을 하자면 내가 개발을 하면서 100가지 기능을 만들었는데 이 기능들이 모두 잘 사용이 되고 있는지 검사를 해주는 거라고 생각하면 된다. 어플리케이션이 구동 중에 만든 기능들을 수행했는지 검사를 하기 위해서 JaCoCo는 agent 형식으로 WAS에 올라가야 한다. 테스트 코드를 충실하게 만들었다면 gradle이나 maven에 plugin을 이용하여 사용을 하기도 하는데 이 글에서는 어플리케이션을 직접 검사할 수 있는 WAS에 agent를 올려서 사용하는 방식을 소개한다. 

 

1. jacocoagent.jar 파일을 구한다. 

 

Maven Repository: org.jacoco » org.jacoco.agent » 0.8.5

org.jacoco org.jacoco.agent 0.8.5 test // https://mvnrepository.com/artifact/org.jacoco/org.jacoco.agent testCompile group: 'org.jacoco', name: 'org.jacoco.agent', version: '0.8.5' // https://mvnrepository.com/artifact/org.jacoco/org.jacoco.agent libraryDe

mvnrepository.com

2. 소스 분석을 할 소스가 들어있는 workspace/coverage 폴더 밑에 jacocoagent/lib 를 만들고 안에 jacocoagent.jar 파일을 넣는다.  (eg. /xxx/workspace/coverage/jacocoagent/lib/jacocoagent.jar  소스는 /xxx/workspace/ABC 이런식으로 들어있다.)

3. 소스 분석 결과를 받기 위한 폴더도 생성을 해 놓는다 jacocoagent/dump

(eg. /xxx/workspace/coverage/jacocoagent/dump )

4. WAS의 jvm option으로

-javaagent:/xxx/workspace/coverage/jacocoagent/lib/jacocoagent.jar=destfile=/xxx/workspace/coverage/jacocoagent/dump/jacoco.exec,append=true,includes=*
을 추가시켜 준다. 

동적 분석 결과물이 jacoco.exec 파일로 나온다는거고 append=true는 WAS가 재기동이 몇번을 한다 해도 결과물이 초기화되지 않고 계속 붙어 나간다는 의미이다. 

5. WAS를 기동하고 어플리케이션의 이런 저런 기능들을 실행시켜본다.

6. WAS를 종료하고 dump 폴더 안에 jacoco.exec 파일이 생성되었는지 확인한다.  (WAS 종료는 반드시 shutdown으로 해야 함 kill로 하면 jacoco.exec 파일 안쌓임)

 

7. Jenkins에서 jacoco plugin 을 설치한다. 

8. Jenkins 에서 Job을 생성하고 사용자 빌드경로 디렉토리를 /xxx/workspace/coverage 로 설정한다.

(전제조건은 application, jenkins가 같은 서버안에 있어야 한다. 다른 서버라면 jacoco.exec 파일을 Jenkins 가 설치된 곳으로 복사하여야 한다.)



9. build에서 record jacoco coverage report를 작성



10. 빌드한다. 그리고 Jenkins 에서 결과물을 확인한다. 

 

위와 같이 Jenkins에서 쉽게 line별 method별 class별 등등 code coverage를 확인할 수 있다.

 

좌측의 패키지명을 눌러서 쭉 따라 들어가면 다음과 같이 통과하지 못한 구간을 확인할 수 있다. 

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31