Hi Brett, Thanks a lot for all the info provided!!! I was missing some of the steps you mentioned, that is why it was not working well over here. Even knowing that the EMMA support is quite preliminary, I will certainly give it a try. UT + code coverage are really important to help us obtain better and more stable code. Thanks again! Best Regards Felipe
On Thu, May 28, 2009 at 5:09 PM, Brett Chabot <brettcha...@android.com>wrote: > + android-platform > > Its great to see people interested in EMMA code coverage on Android. > However, note that EMMA code coverage support on Android is currently quite > preliminary. Its not supported from within the SDK yet. The support that is > in place is for apps and tests that are part of the android source tree. > > That being said, if you still want to give it a try, download the android > source for cupcake, do a full build, and give the instructions below a try. > There are a couple helper scripts that have been created which will > hopefully make this a bit easier. > 1. Generating code coverage for your own tests using runtest script > > First, you need to add the target system/framework/emma.jar to the > device's boot classpath. Modify the BOOTCLASSPATH variable in > /system/core/rootdir/init.rc. The system/framework/emma.jar entry needs to > be added in the exact position shown below: > > export > BOOTCLASSPATH=/system/framework/core.jar:/system/framework/ext.jar: * > /system/framework/emma.jar:* > /system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar > > Rebuild the bootimage to pick up the init.rc changes: > > make bootimage > > Start an emulator with a simulated sdcard: > > emulator -sdcard <path to sdcard.img>& > > Note that the emulator will not fully boot up at this point since the > emma.jar file is not present yet. > > Next, use the runtest.py script. Runtest will do all the necessary steps > to instrument your test and target package, run the test, and generate the > code coverage report. > > > > % runtest_py --coverage apidemos > ... > Coverage report generated at <android build > root>/out/emma/ApiDemos/apidemos/apidemos.html > > > When testing on the emulator, you must launch the emulator with a > simulated sdcard (-sdcard option), as code coverage results are stored to > the sdcard. To use runtest_py, the test must be defined in > development/testrunner/test_defs.xml. > To generate code coverage results, the test must have a "coverage_target" > attribute, which must refer to a target defined in > development/testrunner/coverage_targets.xml > > 2. Generating code coverage for your own tests - The Hard Way > > > The following steps will use apidemos tests as an example, and will assume > the current working path is the android build root. > > Modify the targets BOOTCLASSPATH as described in the preceding section. > > Before doing a build, set > > export EMMA_INSTRUMENT=true > > This instructs the build system to add the necessary emma instrumentation > to the generated bytecode. > > mmm development/samples/ApiDemos > > Pass in a '-e coverage true' argument to adb shell am instrument when > executing tests. > > adb shell am instrument -w -e coverage true > com.example.android.apis.tests/android.test.InstrumentationTestRunner > > This command will dump a runtime coverage data file at /sdcard/coverage.econ > the device. Extract it to local host > > adb pull /sdcard/coverage.ec coverage.ec > > Now generate a coverage report. You'll need to pass in the path to the > coverage metadata generated at build time. > > java -cp external/emma/lib/emma.jar emma report -r html -in coverage.ec -sp > development/samples/ApiDemos/src -in > out/target/common/obj/APPS/ApiDemos_intermediates/coverage.em > > > I hope this helps. > > Regards, > Brett. > > On Wed, May 27, 2009 at 9:25 PM, Deeps <l.prade...@gmail.com> wrote: > >> >> Thanks a lot Felipe. >> >> Yeah..I have included emma.jar in the build path of my application. >> I have the android latest release 1.5 sdk.. However, my application >> has 1.1 target. I tried using Android JUnit and found all my test >> cases are executed. >> And also throu command prompt i followed the syntax mentioned in the >> earlier post.. >> >> Still coverage is 0.0% but i could see the no of instructions. Will >> there be a solution? >> >> Thanks >> Deeps >> >> On May 27, 5:33 pm, Felipe Ramos <felipe.wo...@gmail.com> wrote: >> > Hi Deeps, >> > Nice to hear that you are making progress. Are you using only the SDK, >> or >> > are you building the entire android source code? Maybe your code is not >> > instrumented to generate the coverage statistics and this would be why >> you >> > are getting 0% of code coverage. Are you using the emma.jar provided on >> the >> > Emma site, or the one built in Android source code?? >> > I'll try to reproduce what you have done up to now here. I hope we can >> > manage to get a final solution for this matter. >> > BR >> > Felipe >> > >> > >> > >> > On Tue, May 26, 2009 at 3:26 AM, Deeps <l.prade...@gmail.com> wrote: >> > >> > > Felipe, >> > >> > > Atlast i am half way through in getting the coverage file. But..I dont >> > > see any required output in that file. >> > >> > > I created a sdcard. Then i run my Instrumentation with the following >> > > command, >> > > # am instrument -e coverage true -w com.app.exam.tests/ >> > > android.test.InstrumentationTestRunner >> > >> > > First I got error, Is EMMA jar included. >> > >> > > So, i added the amma.jar in the build path. Again I ran the same >> > > command. Then, I found a coverage file , "coverage.ec" while >> > > navigating thro file explorer of ddms. I pulled it to the desktop and >> > > imported the session to Coverage field in eclipse. >> > >> > > Its unfortunate that I dont see any code coverage but i could see only >> > > the number of instructions.Even though my test cases has run and the >> > > results has displayed, I am getting 0.0% code coverage.. >> > >> > > Can u please try this and share ur experience.. >> > >> > > Deeps >> > >> > > On May 21, 9:25 pm, Felipe Ramos <felipe.wo...@gmail.com> wrote: >> > > > Hi deeps, >> > >> > > > I'm stuck on the point where I need to run the instrumented tests on >> > > > the emulator. I could not find a way yet to make the emulator >> believe >> > > > that theemma.jar is already installed on it. >> > >> > > > Also, I don't know if there is a way of enablingEMMAinstrumentation >> > > > using the SDK. I have not tried that yet. I'm using theandroidfull >> > > > source, compiling it from scratch. I think I'm close, at least to >> run >> > > > it on the emulator, but on this past week I was too busy and could >> not >> > > > investigate more about this issue. I'm planning to put everything I >> > > > know on a blog or something like that, at least to help the other >> > > > developers that are trying to makeEMMAwork onAndroid, since I could >> > > > not find relevant references on this matter from the Google guys. >> > >> > > > I'll send later a step by step of what I made up to now... I'm >> > > > currently at my job, so I don't have much time to write right now. >> > >> > > > BR >> > >> > > > Felipe >> > >> > > > On May 21, 10:00 am, Deeps <l.prade...@gmail.com> wrote: >> > >> > > > > Felipe Ramos, >> > >> > > > > Did u end up somewhere..? I am not able to go ahead with >> this...... >> > >> > > > > deeps- Hide quoted text - >> > >> > > > - Show quoted text -- Hide quoted text - >> > >> > - Show quoted text - >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---