Pokrycie kodu dla Androida (kalabasa-android BDD)

Testuję moją aplikację na Androida za pomocątykwa-android który zapewnia własny „projekt testowy”, ze skryptem, który zmienia nazwę pakietu na testowaną aplikację, a następnie korzysta z podklasy InstrumentationTestRunner:

adb shell am instrument -w -e class sh.calaba.instrumentationbackend.InstrumentationBackend #{ENV['TEST_PACKAGE_NAME']}/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner

Przyjmę każdą odpowiedź, która pozwoli mi wygenerować raport pokrycia kodu podobny do Emmy lub Cobertury dla aplikacji na Androida, z danymi zebranymi podczas testowania w kalabasa-android.

Starając się, aby Emma pracowała, mam ...Próbowałem śledzićte instrukcje aby Maven zbudował mój projekt (ponieważ minęło dużo czasu, odkąd użyłem ant). ZAcoverage.em plik jest generowany wtarget/emmaZmodyfikowano tykwa-android, dodając „-e coverage true"Kiedy uruchomię calabash-android, w końcu zobaczę „Wygenerowane dane pokrycia do /data/data/my.project/files/coverage.ec”adb -e pull /data/data/my.project/files/coverage.ec coverage.ec

... więc teraz powinienem być w stanie:

java -cp $ANDROID_HOME/tools/lib/emma.jar emma report -r html -in target/emma/coverage.em,coverage.ec

ale Dostaję błąd:

EMMA: processing input files...
java.io.UTFDataFormatException: malformed input around byte 107

... Zakładam więc, że coś jest nie tak zwtyczka Android Maveni próbuję dowiedzieć się, jak wygenerowaćcoverage.em plik. Biegnąłemandroid update project -p ." i "ant emma" i "ant emma debug", aleNie mogę znaleźć zasięgu.em gdziekolwiek...

... Wygenerowany plik build.xml zdaje się sugerować, że generowanie pliku zasięgu.em jest generowane tylko wtedy, gdy uruchamiasz „test ant emma”, ale nie sądzę, aby to działało, ponieważ aplikacja testowa jest kontrolowana przez tykwa-android.

W celu uzyskania pracy Cobertury mam ...Nazwy Google różne formy „koberturowego androida”, ale wydaje się, że nikt nie miał szczęścia.Próbowałem skonfigurować profil cobertura w moim pliku poma Maven, aby instrumentować klasy, ale (w Maven 3) dostajęcała masa ostrzeżeń o log4j i mrówkach posiadających atrybuty „InnerClasses” i że powinienem je przekompilować ze źródłabłąd, który com.jayway.maven.plugins.android.generation2: android-maven-plugin: 3.3.0: dex "ANDROID-040-001: Nie można wykonać: Command = / bin / sh -c -cd / path / do / myproject && java -jar $ ANDOID_HOME / platform-tools / lib / dx.jar --dex ... "
EXCEPTION FROM SIMULATION:
local variable type mismatch: attempt to set or access a value of type 
java.lang.Class using a local variable of type java.lang.reflect.Type[].  
This is symptomatic of .class transformation tools that ignore local variable information.

... prawdopodobnie dlatego nikt nie był w stanie uzyskać cobertury działającej na Androidzie?

questionAnswers(1)

yourAnswerToTheQuestion