woong's

Jenkins Emma 연동하기 본문

Develop/Android

Jenkins Emma 연동하기

dlsdnd345 2016. 2. 13. 22:15
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Jenkins Emma 연동하기


Emma는 프로젝트 코드와, 프로젝트 코드를 테스트하는 테스트 코드를 조합하여 비교함으로써,
주어진 테스트 코드가 원본 소스 코드에 대해 어느 정도의 커버리지를 갖는지를 확인

1. Emma 설치



Jenkin 설정 화면으로 이동하여 플러그인 관리를 선택합니다.



 

 

설치 가능 탭을 선택후 emma 에 관한 플러그인을 설치 합니다.

 

 

Ant Build

Test-Project Ant Build

android update test-project –m {대상 Path} –p {Test 프로젝트 Path}

 



 

해당 test 프로젝트 경로에서 위의 명령어를 실행 시키면 파일 3개가 실행됩니다.



 

이렇게 3개의 파일이 추가 되면 Ant Build 가 완료된 것입니다.

Ant Build 가 완료 되서 파일이 추가되면 svn 에 커밋을 꼭!! 해주시기 바랍니다.


Job 생성



 

이름을 지정후 일반 프로젝트와 동일하게 Build a free-style software project 로 생성합니다.


Job 설정

Job 설정 화면으로 이동후 일반 프로젝트 설정과 동일하게 셋팅을 합니다.
일반 프로젝트 설정은 Android Jenkins 연동을 참고하면 되겠습니다.




 

일반 프로젝트 설정과 달리 테스트 Job 설정은 조금 다른부분이있습니다.



 

Build Add Build step 에서 Invoke Ant 를 선택후 Jenkins 설정에서 설정한 CI_ANT 를 선택후
Target 에 clean emma debug install test 을 입력해 주면 되겠습니다.

Post-build Actions Add Post-build Actions 에서 Record Emma coverage report 선택후 
파일 경로를 지정해주면 되겠습니다 .



 

이러한 에러 가 나타나는 경우가 있습니다.

coverage.ec 가 존재 하지 않는다는 에러가 나타날때가 있습니다 .
이에러는 ant.properties 에 test.runner 를 추가해주어야 하는데 추가하지 않았을 경우에 나타나게 됩니다.

 




 

Test 프로젝트에 가보면 이렇게 ant.properties 파일이있습니다 .
이파일을 열어서 코드를 보면



 

이렇게 한줄의 코드가 들어있습니다 .
이코드는 sdk/tools/ant/build.xml 파일에 참조되는 코드입니다.
build.xml 파일에 test.runner 하는 변수를 지정해야 coverage.ec 가 존재하지 않는다는 에러를 사라지게 할수 있습니다.

 




 

이렇게 변경해주면 위의 에러를 사라지게 할수 있고 위의 에러가 사라지면 coverage.xml 이

C:\Program Files (x86)\Jenkins\jobs\TemperatureConverterTest\builds\2013-10-14_18-12-28\emma

이쪽 경로에 만들어진것을 볼수 있습니다 .

Build Now 를 진행하면

C:\Program Files (x86)\Jenkins\jobs\TemperatureConverterTest\builds\2013-10-14_16-32-03\emma

이경로에 coverage.xml 파일이 생성되고 이 생성된 파일을 jenkins 에서 읽어 화면에 출력해주게 됩니다 .


ant.properties 에 test.runner 를 수동이 아닌 자동화로 처리를 할수있습니다.


echo tested.project.dir=../TemperatureConverter>ant.properties

echo test.runner=android.test.InstrumentationTestRunner>>ant.properties



여기서 주의할 점이 두가지 있습니다.


바로 순서 입니다 .


Command 와 Ant 의 순서가 맞지 않으면 에러가 나타납니다.

필자는 정확히 이해 하지 못해 순서에대해서 많은 고생을 했습니다.


두번째로는


echo tested.project.dir=../TemperatureConverter>ant.properties

echo test.runner=android.test.InstrumentationTestRunner>>ant.properties


ant.properties 파일에 소스를 자동화로 넣어주는 작업입니다.


이명령어를 자세히 보면 위에 소스는 >ant.properties 화살표가 하나이고 

아래 명령어는 >>ant.properties 가 두개 입니다 .


필자 역시 여기서 화살표를 하나만 사용했습니다 .

>> 두개를 사용해야 다음칸에 소스가 정확히 입력되는것을 확인할수 있습니다.


정상적으로 완료가 되면 이런 화면을 보실수 있습니다.




 

PS

 

하 .. 한참 고생해서 해결했네요 . ㅜ


Error: Failed to generate emma coverage. Is emma jar on classpath?



 

이런 에러를 보셨을 경우에 해당 Test 프로젝트 경로에서 커맨드 창에 

ant clean emma debug install test

를 해주고 Jenkins 를 다시 빌드 하시면 성공하시는걸 볼수 있습니다.

 

'Develop > Android' 카테고리의 다른 글

Android FindBugs 연동하기  (0) 2016.02.13
Android Jenkins Junit 연동하기  (0) 2016.02.13
Jenkins N’SIQ  (0) 2016.02.13
2. Android Jenkins 연동하기  (0) 2016.02.13
1. Jenkins 설치하기  (0) 2016.02.13
Comments