2012. 2. 16. 00:42

emma 와 ant 를 이용하여 코드 커버리지 측정하기

아주 급하게 정리하였습니다. 좀더 정리가 필요한 것 같지만 일단은 여기서 마무리 하겠습니다.

D:\Android\Workspace>android create test-project --help
Error: Flag '--help' is not valid for 'create test-project'.

       Usage:
       android [global options] create test-project [action options]
       Global options:
  -h --help    : Help on a specific command.
  -v --verbose : Verbose mode, shows errors, warnings and all messages.
  -s --silent  : Silent mode, shows errors only.

                              Action "create test-project":
  Creates a new Android project for a test package.
Options:
  -p --path    : The new project's directory. [required]
  -n --name    : Project name.
  -m --main    : Path to directory of the app under test, relative to the test
                 project directory. [required]


D:\Android\Workspace>android create test-project -p HelloActivity_test -m ../HelloActivity

ant 설치

ant coverage 하면 에러가 발생했음
sdk/tools/ant 밑에 build.xml 을 살펴보면 emma 빌드가 있어서 시도해봄

ant emma 

성공

테스트 대상 프로젝트(원본프로젝트)에 테스트 프로젝트에 생성된 build.xml 과 local.properties 파일을 복사함

그리고 

ant debug

성공

그리고 test project 가서

ant emma debug install test

했는데 마지막에 실패함.

D:\Android\Workspace\HelloActivity_test>adb shell am instrument -w -e coverage true com.example.android.helloactivity.tests/android.test.InstrumentationTestRunner

com.example.android.helloactivity.HelloActivityTest:.
Error: Failed to generate emma coverage. Is emma jar on classpath?

다시 시도해 봄

원본 프로젝트로 가서

android update project -p HelloActivity

를 입력

ant debug

성공 후, test project 로 가서

ant emma debug install test

해서 모두 성공했으나 

     [exec] remote object '/data/data/com.example.android.helloactivity/coverage
.ec' does not exist

라는 메시지와 함께 마지막에 안타깝게 실패

아래 명령 실행으로 성공함.

D:\Android\Workspace\HelloActivity_test>adb shell am instrument -w -e emma true
com.example.android.helloactivity.tests/android.test.InstrumentationTestRunner

위에 것은 성공이 아닌듯 함.

ant emma debug install test

를 성공시켜야 하는데

test 프로젝트에 있는 coverage.em 파일을

adb push coverage.em /sdcard/coverage.ec

로 강제로 밀어 넣고,

android-sdk\tools\ant\build.xml 을

       <!--<property name="emma.dump.file"
                value="/data/data/${tested.manifest.package}/coverage.ec" />-->
        <property name="emma.dump.file"
                value="/sdcard/coverage.ec" />
                
이렇게 수정하고 난 후

D:\Android\Workspace\HelloActivity_test>D:\Android\tools\apache-ant-1.8.2\bin\an
t emma debug install test

이렇게 했더니 성공함.

참고