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
package="com.shinichy.convertBox.tests"
android:versionCode="1"
android:versionName="1.0">
android:targetPackage="com.shinichy.convertBox"
android:label="Tests for com.shinichy.convertBox"/>
sbtでtestsプロジェクトを対象にtestコマンドを実行します。あらかじめテスト対象のAPKをインストールしておいて下さい。
sbt
tests/test
参考
Building Android Test Projects · jberkel/android-plugin Wiki
古いバージョンでのテストの実行方法が説明されています。