Search code examples
androidtestingantcode-coverageemma

ant emma BUILD FAILED


I try to run android unit test with code coverage. I'm using the Android example NotePad.

These are the commands I used:

cd <main project folder>
android update project --path .
android update test-project -m <full path to main project> -p <full path to main project>\tests
cd ./tests
ant emma debug install test

the tests runs successfully. But in the end emma can't generate the report html File.

Here you get the commandline output of ant emma debug install test

Buildfile: C:\Users\Benedikt\workspace_android\NotePad\tests\build.xml

emma:

-set-mode-check:

-set-debug-files:

-check-env:
 [checkenv] Android SDK Tools Revision 22.6.2
 [checkenv] Installed at C:\Android\android-sdk

-setup:
     [echo] Project Name: NotesListTest
  [gettype] Project Type: Test Application

-set-debug-mode:

-debug-obfuscation-check:

-pre-build:

-build-setup:
[getbuildtools] Using latest Build Tools: 19.0.3
     [echo] Resolving Build Target for NotesListTest...
[gettarget] Project Target:   Android 4.4.2
[gettarget] API level:        19
     [echo] ----------
     [echo] Creating output directories if needed...
     [echo] ----------
     [echo] Resolving Dependencies for NotesListTest...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency] 
[dependency] ------------------
     [echo] ----------
     [echo] Building Libraries with 'debug'...
   [subant] No sub-builds to iterate on
     [echo] ----------
     [echo] Building tested project at C:\Users\Benedikt\workspace_android\NotePad with 'instrument'...

-set-mode-check:

-set-instrumented-mode:

-check-env:
 [checkenv] Android SDK Tools Revision 22.6.2
 [checkenv] Installed at C:\Android\android-sdk

-setup:
     [echo] Project Name: NotesList
  [gettype] Project Type: Application

-set-debug-mode:

-debug-obfuscation-check:

-pre-build:

-build-setup:
[getbuildtools] Using latest Build Tools: 19.0.3
     [echo] Resolving Build Target for NotesList...
[gettarget] Project Target:   Android 4.4.2
[gettarget] API level:        19
     [echo] ----------
     [echo] Creating output directories if needed...
     [echo] ----------
     [echo] Resolving Dependencies for NotesList...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency] 
[dependency] ------------------
     [echo] ----------
     [echo] Building Libraries with 'instrument'...
   [subant] No sub-builds to iterate on

-code-gen:
[mergemanifest] Found Deleted Target File
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Found Deleted Target File
     [aapt] Generating resource IDs...
     [echo] ----------
     [echo] Handling BuildConfig class...
[buildconfig] No need to generate new BuildConfig.

-pre-compile:

-compile:
    [javac] Compiling 1 source file to C:\Users\Benedikt\workspace_android\NotePad\bin\classes
     [echo] Instrumenting classes from C:\Users\Benedikt\workspace_android\NotePad\bin/classes...

-post-compile:

-obfuscate:

-dex:
      [dex] input: C:\Users\Benedikt\workspace_android\NotePad\bin\classes
      [dex] input: C:\Android\android-sdk\tools\lib\emma_device.jar
      [dex] Using Pre-Dexed emma_device-e05f8994020e22cd9d939f07950bd18a.jar <- C:\Android\android-sdk\tools\lib\emma_device.jar
      [dex] Found Deleted Target File
      [dex] Converting compiled files and external libraries into C:\Users\Benedikt\workspace_android\NotePad\bin\classes.dex...
       [dx] Merged dex A (17 defs/29,2KiB) with dex B (297 defs/326,8KiB). Result is 314 defs/427,2KiB. Took 0,2s

-crunch:
   [crunch] Crunching PNG Files in source dir: C:\Users\Benedikt\workspace_android\NotePad\res
   [crunch] To destination dir: C:\Users\Benedikt\workspace_android\NotePad\bin\res
   [crunch] Crunched 0 PNG files to update cache

-package-resources:
     [aapt] Found Deleted Target File
     [aapt] Creating full resource package...

-package:
[apkbuilder] Found Deleted Target File
[apkbuilder] Creating NotesList-instrumented-unaligned.apk and signing it with a debug key...

-post-package:

-do-debug:
 [zipalign] Running zip align on final apk...
     [echo] Debug Package: C:\Users\Benedikt\workspace_android\NotePad\bin\NotesList-instrumented.apk
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\bin\build.prop
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\bin\build.prop
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\bin\build.prop
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\bin\build.prop

instrument:
 [zipalign] Run cancelled: no changes to input file C:\Users\Benedikt\workspace_android\NotePad\bin\NotesList-instrumented-unaligned.apk
     [echo] Instrumented Package: C:\Users\Benedikt\workspace_android\NotePad\bin\NotesList-instrumented.apk
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\bin\build.prop
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\bin\build.prop
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\bin\build.prop
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\bin\build.prop
[testedprojectclasspath] Resolved classpath:
[testedprojectclasspath] C:\Users\Benedikt\workspace_android\NotePad\bin\classes

-code-gen:
[mergemanifest] Found Deleted Target File
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Found new input file
     [aapt] Generating resource IDs...
     [echo] ----------
     [echo] Handling BuildConfig class...
[buildconfig] No need to generate new BuildConfig.

-pre-compile:

-compile:

-post-compile:

-obfuscate:

-dex:
      [dex] input: C:\Users\Benedikt\workspace_android\NotePad\tests\bin\classes
      [dex] Found Deleted Target File
      [dex] Converting compiled files and external libraries into C:\Users\Benedikt\workspace_android\NotePad\tests\bin\classes.dex...

-crunch:
   [crunch] Crunching PNG Files in source dir: C:\Users\Benedikt\workspace_android\NotePad\tests\res
   [crunch] To destination dir: C:\Users\Benedikt\workspace_android\NotePad\tests\bin\res
   [crunch] Crunched 0 PNG files to update cache

-package-resources:
     [aapt] Found Deleted Target File
     [aapt] Creating full resource package...

-package:
[apkbuilder] Found Deleted Target File
[apkbuilder] Creating NotesListTest-debug-unaligned.apk and signing it with a debug key...

-post-package:

-do-debug:
 [zipalign] Running zip align on final apk...
     [echo] Debug Package: C:\Users\Benedikt\workspace_android\NotePad\tests\bin\NotesListTest-debug.apk
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\tests\bin\build.prop
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\tests\bin\build.prop
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\tests\bin\build.prop
[propertyfile] Updating property file: C:\Users\Benedikt\workspace_android\NotePad\tests\bin\build.prop

-post-build:

debug:

install:
     [echo] Installing C:\Users\Benedikt\workspace_android\NotePad\tests\bin\NotesListTest-debug.apk onto default emulator or device...
     [exec]     pkg: /data/local/tmp/NotesListTest-debug.apk
     [exec] Success
     [exec] 494 KB/s (8101 bytes in 0.016s)

-set-mode-check:

-set-instrumented-mode:

install:
     [echo] Installing C:\Users\Benedikt\workspace_android\NotePad\bin\NotesList-instrumented.apk onto default emulator or device...
     [exec]     pkg: /data/local/tmp/NotesList-instrumented.apk
     [exec] Success
     [exec] 629 KB/s (211536 bytes in 0.328s)

installi:

-check-env:
 [checkenv] Android SDK Tools Revision 22.6.2
 [checkenv] Installed at C:\Android\android-sdk

-setup:
     [echo] Project Name: NotesListTest
  [gettype] Project Type: Test Application

-test-project-check:

test:
[getlibpath] Library dependencies:
[getlibpath] No Libraries
     [echo] Running tests...
     [echo] Running tests ...
     [exec] 
     [exec] com.example.android.notepad.NotePadActivityTest:.
     [exec] com.example.android.notepad.NotePadProviderTest:..........
     [exec] Test results for InstrumentationTestRunner=...........
     [exec] Time: 2.338
     [exec] 
     [exec] OK (11 tests)
     [exec] 
     [exec] 
     [exec] Generated code coverage data to /data/data/com.example.android.notepad/coverage.ec
     [echo] Setting permission to download the coverage file...
     [exec] run-as: Package 'com.example.android.notepad' is unknown
     [echo] Downloading coverage file into project directory...
     [exec] failed to copy '/data/data/com.example.android.notepad/coverage.ec' to 'C:\Users\Benedikt\workspace_android\NotePad\tests\bin\coverage.ec': Permission denied
     [echo] Extracting coverage report...

BUILD FAILED
C:\Android\android-sdk\tools\ant\build.xml:1313: [EMMA v2.0.5312] report: no valid input data files have been specified

Total time...

I would like to post the C:\Android\android-sdk\tools\ant\build.xml but the file is to long. But i guess it is always the same...

Any ideas?


Solution

  • The command ant emma debug install test is only successfull on a rooted device or on an emulator (otherwise permission denied).

    Useful hints:

    • If you're using SDK 13 or older you've to use ant coverage instead of ant emma debug install test
    • One of the last output lines show you where the report file has been saved
    • If you use Windows you have to add the Path of the android.bat (normally /tools) and the path of the ant.bat (depending where you installed Ant; If you use Eclipse with ADT it is normally there: /plugins/org.apache.ant.../bin) to the PATH Variable (you may also have to do this with a diffrent OS)