テスト対象のアプリを反映するようにパッケージの名前を変更するスクリプトを使用して、独自の「テスト プロジェクト」を提供するcalabash-androidを使用して Android アプリケーションをテストし、InstrumentationTestRunner サブクラスを使用します。
adb shell am instrument -w -e class sh.calaba.instrumentationbackend.InstrumentationBackend #{ENV['TEST_PACKAGE_NAME']}/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner
Android アプリの Emma や Cobertura に似たコード カバレッジ レポートを生成できる回答であれば、calabash-android でのテスト中に収集されたデータを使用できます。
エマを働かせようとして、私は...
- これらの指示に従って、Maven にプロジェクトをビルドさせようとしました (ant を使用してから時間が経ちすぎたため)。に
coverage.em
ファイルが生成されます。target/emma
-e coverage true
" "を追加して、calabash-android スクリプトを変更しました。- calabash-android を実行すると、最終的に「生成されたカバレッジ データを /data/data/my.project/files/coverage.ec に」と表示されます。
adb -e pull /data/data/my.project/files/coverage.ec coverage.ec
...だから今、私は実行できるはずです:
java -cp $ANDROID_HOME/tools/lib/emma.jar emma report -r html -in target/emma/coverage.em,coverage.ec
しかし、私はエラーが発生します:
EMMA: processing input files...
java.io.UTFDataFormatException: malformed input around byte 107
...だから、 Android maven pluginに何か問題があると思い、ファイルを生成する方法を見つけようとしていcoverage.em
ます。android update project -p .
" " と " ant emma
" と " "を実行しましたant emma debug
が、coverage.em がどこにも見つかりません...
...生成されたbuild.xmlファイルは、「ant emma test」を実行したときにのみcoverage.emファイルの生成が生成されることを暗示しているようですが、テストアプリはによって制御されているため、うまくいかないと思いますひょうたんアンドロイド。
Coberturaを機能させるために、私は...
- さまざまな形式の「cobertura android」をグーグル検索しましたが、運が良かった人はいないようです。
- クラスを計測するために Maven pom ファイルで cobertura プロファイルを構成しようとしましたが、(Maven 3 で)
- 「InnerClasses」属性を持つlog4jとantに関する警告の山全体と、ソースからそれらを再コンパイルする必要があること
- com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.3.0:dex "ANDROID-040-001: Could not execute: Command = /bin/sh -c -cd /path/ というエラーto/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.
... これがおそらく誰も cobertura を Android で動作させることができなかった理由ですか?