2011-05-18 30 views
1

问题:我需要修改Android Developer TestSuite example中的代码,以便运行包中的所有测试用例,除了一些明确定义的测试用例。目前,它只是运行他们都:Android TestSuite:包括除明确定义的所有测试用例外

public class AllTests extends TestSuite { 
    public static Test suite() { 
     return new TestSuiteBuilder(AllTests.class) 
       .includeAllPackagesUnderHere() 
       .build(); 
    } 
} 

望着Docs for TestSuiteBuilder,也许我可以通过增加TestSuiteBuilder的addRequirements()的调用方法适应上面的代码,但我不能让元首或如果这能尾巴做它,或者应该被用来做它。

如果addRequirements将会被用来排除AndroidTestCases,我该如何调用它?我不明白,我会通过什么样的说法,该文件说:

addRequirements(Predicate...<TestMethod> predicates) 
//Exclude tests that fail to satisfy all of the given predicates. 

但我不能找到一个类Predicate的存在或应该如何填充达到我的目的什么。

感谢

回答

0
+0

谢谢!不幸的是,虽然Eclipse不喜欢@Ignore或@Test标签,但它说“无法解析为类型”? – Jodes 2011-05-18 08:39:42

+0

嗯......我正在使用它们,并没有遇到问题......我甚至能够搜索引用。 – Kichu 2011-05-19 04:48:20

+2

由于Android仅支持Junit3,因此无法如此清楚地说明:“请注意,Android测试API支持JUnit 3代码风格,但不支持JUnit 4.” http://developer.android.com/guide/topics/testing/testing_android.html#JUnit – Maks 2012-04-04 02:53:25

1

我决定只包括所有我想明确地代替的。

http://developer.android.com/reference/junit/framework/TestSuite.html

的TestSuite似乎并不具有removeTestSuite方法或类似的,所以我不能未包括的TestSuiteBuilder会增加它建立一个测试任何测试。如果有人能够解释如何使用addRequirements(...)方法排除/包含测试,我将不胜感激。

2

我想在开发过程中运行单元测试时要排除的InstrumentationTestCases,能够在没有任何时间的功能测试运行测试套件。

我是这样做的:

public class FastTestSuite extends TestSuite { 

    public static Test suite() { 

     // get the list of all the tests using the default testSuiteBuilder 
     TestSuiteBuilder b = new TestSuiteBuilder(FastTestSuite.class); 
     b.includePackages("com.your.package.name"); 
     TestSuite allTest = b.build(); 


     // select the tests that are NOT subclassing InstrumentationTestCase 
     TestSuite selectedTests = new TestSuite(); 

     for (Test test : Collections.list(allTest.tests())) { 

      if (test instanceof TestSuite) { 
       TestSuite suite = (TestSuite) test; 
       String classname = suite.getName(); 

       try { 
        Class<?> clazz = Class.forName(classname); 
        if (!InstrumentationTestCase.class.isAssignableFrom(clazz)) { 
         selectedTests.addTest(test); 
        } 
       } catch (Exception e) { 
        continue; 
       } 
      } 
     } 
     return selectedTests; 
    } 
} 
相关问题