机器人中的测试套件问题

时间:2011-11-21 07:49:59

标签: android junit robotium

我有一个带有大约20个方法(测试用例)的测试用例文件,它扩展了ActivityInstrumentationTestCase2。我需要编写一个只调用选定的测试用例方法的套件,我知道在junit中有一个接受要执行的方法的方法

    suite.addTest( new AllTestCases("testcase1"));

在android机器人中有没有类似的方法呢?如果是的话,请帮我解决这个问题。感谢。

3 个答案:

答案 0 :(得分:1)

您无法像new AllTestCases("testcase1");那样进行调用,因为所有Android相关的测试类都继承自AndroidTestCaseInstrumentationTestCase,并且这些类都没有公开将字符串作为字符串的构造函数参数。

您可以查看android.test.suitebuilder.TestSuiteBuilder,但即使这个类不允许运行单独的测试方法,它也接受包级别的测试。

使用Android测试注释(例如@SmallTest@MediumTest@LargeTest等等,您可能会有一些运气来实现目标。这些将允许您仅使用指定的带注释的方法来定位以下命令:

adb shell am instrument -w -e size <small|medium|large> com.youproject.test/android.test.InstrumentationTestRunner

最后,可以直接从eclipse中定位单个测试方法或类。

答案 1 :(得分:1)

直接从命令行运行单个测试用例:

adb shell am instrument -w -e class&lt; Test-Class-With-Package-Name &gt; #&lt; 测试 - 方法-名称 &GT; &LT;的 包名-OF-试验应用 &GT; /&LT;的 仪表-名称定义的多功能清单< / EM> &GT;

示例:

adb shell am instrument -w -e class com.myapp.test.ActivityFragmentTest#testLogin com.myapp.test/android.test.InstrumentationTestRunner

答案 2 :(得分:0)

您可以使用“adb shell am instrument”命令的“-e”参数以编程方式运行各个测试用例。例如,对于'com.foo.bar.FooTest'中的方法'testFoo()',您可以运行:

adb shell am instrument -w \  -e“class com.foo.bar.FooTest#testFoo”\  com.foo.bar.test / android.test.InstrumentationTestRunner

http://developer.android.com/guide/developing/testing/testing_otheride.html