2013年7月11日木曜日

sbt-androidでRobotiumのテストを実行

SBT-Android 0.7でRobotiumなどのActivityやViewなどのAndroidのライブラリに依存したテストの実行方法が少し変わっているようなので、sbt-androidからRobotiumのテストの実行方法について説明します。

giter8でテンプレートからプロジェクトを作成しているとtestsディレクトリが初めからできていると思いますが、その中にRobotiumのテストコードを置きます。

tests/src/main/scala/MainActivityTest.scala

import android.test.ActivityInstrumentationTestCase2
import com.jayway.android.robotium.solo.Solo
import junit.framework.Assert._
import com.shinichy.convertBox.MainActivity

class MainActivityTest extends ActivityInstrumentationTestCase2(classOf[MainActivity]) {
  // need to import here to refer to com.shinichy.convertBox.TR
  import com.shinichy.convertBox.TR

  var solo: Solo = null
  var activity: MainActivity = null

  override def setUp() {
    solo = new Solo(getInstrumentation, getActivity)
    activity = getActivity
  }

  override def tearDown() {
    solo.finishOpenedActivities()
  }

  def testHello() {
    val searchText = activity.findView(TR.search_text)
    solo.enterText(searchText, "Hello")
    assertEquals("Hello", searchText.getText.toString)
  }
}

次にtests/src/mainにテスト用のAndroidManifest.xmlを作成します。
書き方は以下を参考にして下さい。
Testing from Other IDEs | Android Developers

以下はcom.shinichy.convertBoxパッケージをテストする例です。

tests/src/main/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.shinichy.convertBox.tests"
          android:versionCode="1"
          android:versionName="1.0">
  <application>
    <uses-library android:name="android.test.runner"/>
  </application>
  <instrumentation android:name="android.test.InstrumentationTestRunner"
                   android:targetPackage="com.shinichy.convertBox"
                   android:label="Tests for com.shinichy.convertBox"/>
</manifest>

sbtでtestsプロジェクトを対象にtestコマンドを実行します。あらかじめテスト対象のAPKをインストールしておいて下さい。

sbt
tests/test

参考

0 件のコメント:

コメントを投稿