すいません、VB4しかやってないんです、VBAはやったけど(ぼそ) チラシの裏だって立派な書き込み空間なんだからねっ!資源の有効活用なんだからねっ!とか偉そうに言ってるけど、実は色々と書き残したいだけ

だからなに? どうしろと? くるみサイズの脳みそしかないあやしいジャンガリアンベムスターがさすらう贖罪蹂躙(ゴシックペナルティ)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  632  : 記事  35  : コメント  11671  : トラックバック  143

ニュース


片桐 継 は
こんなやつ

かたぎり つぐ ってよむの

大阪生まれ河内育ちなんだけど
関東に住みついちゃったの
和装着付師だったりするの
エセモノカキやってたりするの
VBが得意だったりするの
SQL文が大好きだったりするの
囲碁修行中だったりするの
ボトゲ好きだったりするの
F#かわいいよF#

正体は会った人だけ知ってるの

空気読まなくてごめんなさいなの


わんくまリンク

C#, VB.NET 掲示板
C# VB.NET掲示板

わんくま同盟
わんくま同盟Blog


WindowsでGo言語
WindowsでGo言語


ネット活動


SNSは疲れました

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

イベント活動

プログラムの活動

最初、EclipseでJunit 4.11+Robolectricを使ってたんだけど、AndroidStudioに移植した時に、全部グリーン状態のソースを移植したのでテストコードは省いてたw

なので、機能追加のついでに、テストコードも移植しようと思ったんだけど、意外な展開が。

!!! JUnit version 3.8 or later expected:

java.lang.RuntimeException: Stub!
<中略> Process finished with exit code -3

素直にRobolectricを依存ライブラリに追加して実行して、なにこれ???というわけで色々と調査。で、判ったことは

  • Android StudioでRobolectric使うならプラグインいれましょう
  • クラスパスはJunit>SDKの順番でライブラリ参照しましょう

あふー、gradleをいじる羽目になりましたですよorz 書き直すのメンドイなー。

RobolectricスタッフのブログGoogleGroupを見る限りだと、この辺りの問題はできたら解決したいなー的レベルらしくて、しばらくは手動でごにょごにょの世界のようです。まぁAndroid Studio自身がbetaの立場だもんなー、正式版になってからなんだろうなぁ(遠い目)

で、やってみたこと。

  1. app/build.gradleにrobolectricの依存ライブラリ追加
  2. ルートのbuild.gradleにrobolectricのプラグインのための依存ライブラリ追加
  3. app/buid.gradleにrobolectircのプラグイン追加
  4. ここで、いったんgladleをSync
  5. ターミナルから、プロジェクトルートでgladle robolectric を実行し、必要なクラスがコンパイルされていることを確認
  6. テストコードを書いて、ライブラリが追加出来ていることを確認
  7. テストコードから生成されたクラスの出力先をクラスパスに追加
  8. プロジェクトルートにある、.imlファイルの中にあるクラスファイルの読み込み順番を変更
  9. gladlew androidTest を実行

さらっと書いたけど、2から5の間はgradleソースの読み込みだったので、簡単じゃなかったよorz  gradleソースはpom.xmlよりも何をやっているのかソースで追える分、楽と言えば楽だし、親切と言えば親切なんだけどね。やっててよかったgroovy。

そして、何とかたどり着く9のフェーズ。ここで恐怖のハマりポイント、自クラスをクラスパスにうまく追加できない、をやらかしてしまった。いや、世界には、この方法で解決している人もいるので(成功例がMacOSXだったりするのがとてもとても気になるけれどもw)きっと、何かが悪いんだろう。

収穫はgradleソースが読めるようになった、ってことで、挫折orz

これに丸々二日ハマって、なんか疲れたんで、基本に立ち返ってみたんだ。

Android SDK にテストフレームワークがあるのかな?

結論から言えば、ある、Junitがある。ただし、バージョンは3.8。便利なassertもアノテーションも全滅のオールドタイプさん。まぁ悪いバージョンじゃないんだ、基本機能はガッチリ揃ってるし、実績も高いしさ。まさかとは思うけど、Mavenリポジトリサイトで、Junit3.8のダウンロード数が廃れないのは、こいつのせいだったりしてねw 

Testing Fundamentals | Android Developers:
http://developer.android.com/tools/testing/testing_android.html

基本に立ち返って、もう一度、この記事を目皿にして読み直し、抜粋したポイントは

  • ディレクトリを作成する
  • テストしたいAndroidオブジェクトに対応したTestCaseを継承してテストコードを書く
  • Android Test を実行する

これだけ。じゃ、やってみようか、もちろん、最初はレッドのテストでね。

まず、ディレクトリ作成

image

デフォルト配色で、androidTest/javaフォルダが緑色になればOK。これは、テストクラスのあるパッケージディレクトリですよ、を指している色で、これが指定されていないと、後の作業がメンドクサイ、フォルダ見難いw

このフォルダの指定は、モジュールの.imlファイルに記述されているので、検索してフォルダ表記が無かったら、それを記述追加してリビルドすれば環境ができているはず。できるだけ、いじらないでいたいなら、テストクラスとして指定されている別のフォルダがすでにあれば、それを新規作成すると後も綺麗に続けられるので楽。テストクラスのパッケージフォルダ記述が無いなら、仕方ないから追加ね。

そして、テストクラスを新規作成。これはいつもの新規作成の手順でOK。

public class ApplicationTest extends ApplicationTestCase<Application> {
    public ApplicationTest() {
        super(Application.class);
    }

    public void testAssertion(){
        assertEquals(1,3);
    }
}

絶対レッドのテストw<手抜きすぎw

今回はアクティビティやコンテンツのテストではないので、ApplicationTestCaseを継承したけど、テストしたいものによって継承するテストクラスが異なるので、細かい事は前記述のサイトのリンクから参照で。(そのうち、まとめるとは思うけどw)

クラスが書けたら、次は実行設定。私は、モジュール内のxxxxTestクラスのtestXXXXメソッドを総なめにした。細かくやりたい人はパッケージ事とかに分けると良いと思う。


image

Android SDKのJunitは実行環境を必要とするのでエミュレーターは起動しておき、立ち上がりを確認したら、テストを実行してエミュレーターに環境割り当てをすると、テストモジュールがエミュレーターにアップロードされて……

image

よっしあぁ!レッドすねぇぇくかもぉぉん♪

というわけで、立ち返ってからレッドになるまで、2時間だったというオチw

基本って大事だね! 痛感したわ。

投稿日時 : 2014年8月21日 16:49

Post Feedback

タイトル
名前
Url:
コメント