2011-11-26 171 views
10

我爲我的應用程序開發了一套使用Robotium庫在Scala中編寫的Android測試套件。該套件適用於所有意圖和目的,是一個標準的Android JUnit測試項目,如果從Eclipse啓動,它將成功運行。如何使用sbt運行Android測試?

我已經用sbt android-plugin成功構建並運行了我的主Android應用程序。主要應用程序位於[ProjectDir]/src/main。我也能夠成功地build my Android test application位於[ProjectDir]/tests/src/main目錄中。我檢查了模擬器,並且測試應用程序似乎已經通過android-plugin的tests/android:install-emulator命令正確安裝。然而,當我嘗試通過sbt tests/android:test-emulator運行測試項目中,我得到:

... 
Test results for InstrumentationTestRunner= 
Time: 0.001 

OK (0 tests) 

我怎樣才能獲得SBT Android的插件來認識該項目包含JUnit測試和運行它們?

回答

1

這裏使用的命名約定與正常的JUnit相同,因此您需要命名測試xxxTest.class。他們還需要擴展TestCase(AndroidTestCase,InstrumentationTestCase等)。

要重申,月食將運行一個命令,它看起來像:

adb shell am instrument -w -e class com.android.foo.FooTest,com.android.foo.TooTest com.android.foo/android.test.InstrumentationTestRunner 

它將類名稱追加到命令,這樣的命名規則可能不適用。

如果從SBT運行,它將運行

adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunner 

這將找到所有與someClassNameTest完成應用com.android.foo的包名下的類。

+0

那麼你是說它適合你嗎?這些測試在Eclipse的Junit Android測試運行器中運行良好。我不知道類命名約定,但知道方法命名約定 - 它們的方法名稱前面必須加上「test」一詞。我的測試擴展了一個擴展'ActivityInstrumentationTestCase2'的自定義類'TestFixture'。 –

+0

你試過FixtureTest嗎? – charroch