将测试类/包放在一个测试套件中

时间:2013-02-13 18:02:01

标签: android testing

我有几个测试所在的软件包:

  1. com.example.tests.common - 适用于手机和平板电脑
  2. com.example.tests.phones - 仅限电话
  3. com.example.tests.tablets - 仅限平板电脑
  4. 现在要为手机运行测试,我需要运行位于commonphones包中的类的测试 - 两次运行。平板电脑也是如此。

    我需要他们一次性运行平板电脑/手机的所有测试。 TestSuite的example对我不起作用:

     Class[] testClasses = { MathTest.class, AnotherTest.class }
     TestSuite suite= new TestSuite(testClasses);
    

    对于TestSuite没有这样的构造函数的错误,它不起作用。

    所以问题是: 1.为什么它不能按照例子工作。

    1. 有没有其他方法可以将所需的类/包放在一个suite中?
    2. 非常感谢。

3 个答案:

答案 0 :(得分:2)

通常最好将测试套件包命名为test.com.example.phones,并在包名称中添加test.前缀。这样可以一次性轻松地运行,重定位或移动所有测试。如果关注特定于设备的测试很重要,那么另一种方法就像test.phones.com.exampletest.tablets.com.example

虽然也可以使用测试套件,但这些套件通常是多余的。最常见的测试类型是针对正在测试的软件包运行所有测试并运行所有可用的测试。如果测试包镜像主包,则可以从IDE轻松启动此类运行,该IDE提供在文件夹/包中运行所有测试的功能(右键单击并在Eclipse中选择“作为Android测试运行”)。在云中的自动构建过程中,通常所有测试都必须运行。

如果您有更多测试,那么创建一个单独的测试项目并不是一个坏主意。

答案 1 :(得分:1)

  1. TestSuite(Class [])没有constructor
  2. 您可以使用变量参数列表:

    TestSuite suite = new TestSuite(MathTest.class, AnotherTest.class);
    
  3. 或者像以前一样的数组,但你必须用字符串识别它:

    TestSuite suite = new TestSuite({MathTest.class, AnotherTest.class}, "Example");
    

答案 2 :(得分:0)

我真正想要的是TestSuiteBuilder

以下是我现在所拥有的:

public class TabletAllTests extends TestSuite {

    public static Test suite() {

        TestSuiteBuilder suiteBuilder = new TestSuiteBuilder(PhoneAllTests.class);
        suiteBuilder.includePackages("<my_package>.test.common");
        suiteBuilder.includePackages("<my_package>.test.tablet");

        return suiteBuilder.build();
    }
}

PhoneAllTests

也一样