[英]Run Junit test using android instrumentation on a package with classes in specific order
我正在尝试使用命令行运行android instrumentation Junit测试。我正在使用以下命令,它正在启动测试权限。
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。
任何帮助表示赞赏。
我终于使用以下命令使其工作:
adb shell am instrument -e class com.android.foo.LaunchTest -w com.android.foo/android.test.InstrumentationTestRunner
如果测试执行的顺序很重要,那么测试很脆弱,应该重构。 这意味着它们相互依赖,理想情况下,测试是独立的。 通常大多数测试是如此独立和细粒度,我们称之为单元测试。
打破这种依赖的一个常见开端是在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.