我正在尝试使用命令行运行android instrumentation Junit test。我正在使用以下命令,它正在启动测试。
adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunner
我的android项目包包含以下java源文件(按字母顺序)
com.android.foo
ActivityTest
ContactsTest
LaunchTest
SendTest
当我使用上面提到的命令运行测试时,测试首先开始执行ActivityTest,依此类推。这不是我想要的,我想让它先执行LaunchTest,然后执行ContactTest、SendTest和ActivityTest。我试着用
adb shell am instrument -w -e class com.android.foo.LaunchTest,com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner
但它给了我一个错误,可能是因为我没有在代码中使用TestCase类,而是我的LaunchTest和其他扩展了ActivityInstrumentationTestCase2的类。
任何帮助都是非常感谢的。
发布于 2011-10-28 04:05:28
我最终使用下面的命令让它正常工作:
adb shell am instrument -e class com.android.foo.LaunchTest -w com.android.foo/android.test.InstrumentationTestRunner
发布于 2011-10-26 10:57:05
如果您的测试执行顺序很重要,那么您的测试是脆弱的,应该进行重构。这意味着它们相互依赖,理想情况下,测试是独立的。通常,大多数测试都是非常独立和细粒度的,因此我们称之为单元测试。
打破这种依赖关系的一个常见方法是在TestCase中使用setup()
和teardown()
方法。在这里,您可以为运行测试做准备,并清除测试可能做出的任何更改。
也就是说,android.test.InstrumentationTestRunner
没有为您的测试套件重新排序的选项。然而,这可以通过两种方式来完成。
1)您可以创建自己的android.test.InstrumentationTestRunner
实现,执行一些特殊的排序。这将给你最大的灵活性,但可能需要更多的时间。
2) am instrument
可以将类名作为参数,这样您就可以按顺序运行测试,但可以运行多个命令(可能组合在一个bash脚本中)。这可以通过添加参数"-e class classname of test“来完成。
此外,您运行测试的方式中存在一个错误:
adb shell am instrument -w -e class com.android.foo.LaunchTest,com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner
尝试运行两个类。为此,您需要将其更改为:
adb shell am instrument -w -e class com.android.foo.LaunchTest com.android.foo/android.test.InstrumentationTestRunner
adb shell am instrument -w -e class com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner
https://stackoverflow.com/questions/7897134
复制相似问题