2016/07/11

[androidTest]testInstrumentationRunnerを書き忘れて1時間悩む

タイトル通りだ。

Local Unit Testsは行ったものの、実機じゃないと動きが見られないところがあるし、動いたなら何か結果を残したくなる。
なので、カバレッジを取りたい。

ただ、GCOVなどと違い、どうも「テストするぞ」というコードを書かないとカバレッジは取れないようであった。
準備として、testではなくandroidTestにテストコードを書いて実行させようとした。

したのだが、"no tests were found"になってしまう。
Invalidate/Resetとか、Rebuildとか、package名の書き間違えとか、@RunWithとか、それっぽいものはやってみたのだけれども、変わらず。

 

初心に戻り、Android Developersの記事を再確認することにした。
Building Instrumented Unit Tests | Android Developers
dependenciesには追加しているし。。。あ、defaultConfigの方にtestInstrumentationRunnerを追加してない!

追加すると、あっさり動きました。
そういうものよね。


ただ、今回は呼ばれるかどうかだけのテストメソッドだったため、コマンドラインから

gradlew createDebugCoverageReport

などとしても、テストメソッド以外呼ばれていないためだろうけど、足跡が残らない。
Activityからボタンを押してテストを実行するような作りにしているので、それと似たようなことをテストコードでやってしまわないといかんのだろう。

 

Testing UI for a Single App | Android Developers

この辺をまねすればよいのかもしれんが、使うのはContextだけだし。。。
いや、自分のServiceも持っているので、それが起動しないとダメか。

じゃあ全部の分岐にLog.v()でも書いて目視でチェック?
いやぁ、それもちょっとないな。

やっぱり、テストがしたいわけじゃなくて、どちらかと言えばアプリを動かしたときのカバレッジが取りたいだけなのだ。


Serviceのみ、とか、ContentProviderのみ、みたいなのは見つかるし、Unit Testのカバレッジというのも見つかるのだけど、テストせずにカバレッジ、というのがないな。

ないのか。。。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。