繁体   English   中英

在具有特定顺序的类的包上使用android检测运行Junit测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM