Android、Java、Web系、Linux、マラソン等の備忘録

2015/05/10

Android StudioでサクサクTDDできない!

0 件のコメント

まだ移行してなかった

2014年12月にAndroid Studio 1.0がリリースされて、年末にAndroid Studioへ移行しようと思ってましたが、EclipseのようにJUnitでサクサクテストするやり方がわからなかったので引き続きEclipseを使ってました。サクサクテストというのは、Run as > JUnit Test > Android JUnit Test Launcherで起動するJUnitテストです。


このテストのメリットはエミュレータ等のAndroid端末を介さないので一瞬で起動することです。一瞬で起動してくれるので、リズム良くテスト駆動開発が行えます。JUnit実践入門 で言うところの13章のモデル用にプロジェクトを作成してテストする話です。※1
Android固有のContext等を含むクラスのテストはできませんが、依存しないように作るのがメリットだったりします。

※1ここではJavaプロジェクトで作成するように掲載されてますが、Androidプロジェクトにモデルのコードを記述して、モデル用のAndroid Test Project(Run as > JUnit Test > Android JUnit Test Launcherしか実行しないプロジェクト)を作成する方がAPI的に良いと個人的には思います。

先日、技術系ブログを拝見してましたら、もうEclipseを使ってる人いないなどとサラっと書かれててショックを受け、DroidKaigiでもAndroid Studioが普通で、また我がアプリのバージョンアップも区切りがついたので、そろそろ現実と向き合おうと思います。

やりたいこと

  • テスト
    • JUnitでロジックのテスト
    • その他いろいろテスト(次回以降)
  • Eclipseとだいたい同じショートカット(次回以降)

その他Android Studioの特徴的な部分は追々調べながらやるとして、まずはテストですね。あと、gradle使っての自動テストとかも調べたいです。ショートカットも大事です。Eclipseでは使いやすいようカスタマイズしてたので、それに似た挙動をするようにカスタマイズしたいです。

環境

  • Android Studio:1.2
  • OS:Win7

JUnitでロジックのテスト

まずは、新規プロジェクトを作成。

モジュールのbuild.gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:1.9.5'
}

テストケースをどこに書いたらいいの?

こちらの記事で紹介されてるサンプルによりますと、
/app/src/test/java/パッケージ名のディレクトリ/TestClassTest.java

となってますが、Android Studio的にどうやって作成するのか....

表示方法を変えれば良いという初歩的なことでした....
右クリックでディレクトリとパッケージを作成して、TestClassTest.javaを作成し、import org.junit.Test;と記述すると、Cannot resolve symbol 'junit'というエラー。これまた初歩的なことなんですが、メニュー > Build > Rebuild Projectで解決しました。Eclipseみたにサクッとビルドしたいのですが。

と思ったら、Rebuild Projectは大きな変更の時にと書いてありますね。
Difference between make and build in Android Studio - Stack Overflow
Compile All the source files in the specified scope are compiled. The scope in this case may be a file, a package, etc.
Make Project All the source files in the entire project that have been modified since the last compilation are compiled. Dependent source files, if appropriate, are also compiled. Additionally, the tasks tied to the compilation or make process on modified sources are performed. For example, EJB validation is performed if the corresponding option is enabled on the Validation page.
Make Module Compiled are all the source files that have been modified since the last compilation in the selected module as well as in all the modules it depends on recursively.
Rebuild Project All the source files in the project are recompiled. This may be necessary when the classpath entries have changed, for example, SDKs or libraries being used added, removed or altered

パッケージ名が思ってた感じではないですがとりあえずコードを。

JUnit実行

TestClassTest右クリック > Run > TestClassTest(下のアイコンのやつ) として実行


うーん、遅い....

ビルドが遅いのが原因かと、こちらを試してみました。
確かに多少速くなりましたが、Eclipseのとは根本的に別モノということでしょうか?
僕が求めてるのはこの↓速さというか、リズム感です。


でも、Intellij ideaの動画ではサクサクJUnitを実行しているのを見かけるのですが....
テスト駆動開発でModel部分を作成するときだけEclipseで開発して、テストが通ったらAndroid Studioへ持ってくる(テストコードも)のが良いのかなという結論になってしまいました。

0 件のコメント :

コメントを投稿