ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JaCoCo를 사용하여 Randoop의 code coverage 확인하기
    Software Testing 2020. 10. 23. 17:18

    Java 프로그램을 대상으로 유닛 테스트를 자동으로 생성하기 위해서 Randoop을 사용중이다. 

    Randoop이 유닛 테스트를 생성할 때에 code coverage를 확인하고 싶어서 JaCoCo를 사용해서 알아보았다. 

     

    예제에서 사용한 repository는 아파치 재단의 commons-csv repository다. 

    Randoop은 이미 설치되어 있다고 가정하겠다. 

     

    1. JaCoCo 다운받기

    JaCoCo - Java Code Coverage Library의 공식홈페이지 (www.eclemma.org/jacoco/) 에 가서 제일 최신버전으로 다운로드 받으면 된다. 

     

    2. JaCoCo Path 지정해주기

    JaCoCo 파일의 lib 폴더에 들어가면 7개의 jar 파일이 있다. 현 상황에서 사용할 jar 파일은 'jacocoagent.jar', 'jacococli.jar' 두 개이다. 

    명령어를 입력할 때에 JaCoCo의 Jar 파일들을 하나하나 입력하기 귀찮으니 Jar 파일들의 주소를 간단하게 입력할 수 있게 지정해주면 좋다. 

    나는 OSX를 사용하기 때문에

    vim ~/.bash_profile

    위 명령어로 bash_profile 파일의 맨 아래에

    jacocoagentJar=/Users/user/Projects/Capstone/jacoco/lib/jacocoagent.jar
    jacococliJar=/Users/user/Projects/Capstone/jacoco/lib/jacococli.jar

    아래와 같은 jar 파일들이 있는 주소를 입력해주고

    source ~/.bash_profile

    위 명령어로 ${jacocoagentJar} 와 ${jacococliJar}를 command line에 입력할 때에 해당 주소가 적용되게 한다. 

     

     

    3. Randoop 테스트를 생성할 때에 code coverage 측정

    기존에 Randoop 테스트를 생성할 때에는 나는 아래와 같은 명령어를 사용했다. 

    java -classpath ${RANDOOP_JAR}: randoop.main.Main gentests —classlist=myclasses.txt

    이제 테스트를 생성하면서 code coverage를 측정하기 위해서 JaCoCo를 사용하는 option ( -javaagent:${jacocoagentJar} )도 추가해주면 된다. 

    java -classpath ${RANDOOP_JAR}: -javaagent:${jacocoagentJar} randoop.main.Main gentests —classlist=myclasses.txt

    그러면 해당 폴더에 jacoco.exec 파일이 생성되는 것을 확인할 수 있다. 

     

    4. jacoco.exec파일로 html 파일 생성

    jacoco.exec 파일은 binary 파일이여서 이 파일만으로는 인간의 눈으로 code coverage에 대한 정보를 알기 쉽지 않다. IntelliJ나 Eclipse를 사용하면 html로 변환하지 않아도 code coverage 정보를 확인할 수 있는 것 같다. 하지만 html로 정리된 code coverage 정보를 보고 싶기 때문에 아래의 명령어를 사용했다. 

     

    #java -jar ${jacococliJar} report —classfiles [class가 있는 폴더] jacoco.exec —html [html을 생성할 주소]
    java -jar ${jacococliJar} report —classfiles . jacoco.exec —html .

    그러면 html이 생성되게 지정한 폴더에 index.html이 생성된 것을 확인할 수 있다. 

    이 index.html을 열면 code coverage를 한 눈에 확인할 수 있다. 

     

Designed by Tistory.