2011-11-26 95 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