问题:我需要修改 Android Developer TestSuite example 中的代码以便它运行包中的所有测试用例,除了一些明确定义的测试用例。目前它只是运行它们:
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
的存在或应该如何填充它以实现我的目标的信息。
谢谢
最佳答案
我想在开发期间运行单元测试时排除 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;
}
}
关于java - 安卓测试套件 : Include all TestCases except some explicitly defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6041173/