Android TestSuite: включает все TestCases, за исключением некоторых явно определенных
Проблема: мне нужно адаптировать код из примера Android Developer TestSuite, чтобы он запускал все TestCases в пакете, кроме нескольких явно определенных. В настоящее время он просто запускает их все:
public class AllTests extends TestSuite {
public static Test suite() {
return new TestSuiteBuilder(AllTests.class)
.includeAllPackagesUnderHere()
.build();
}
}
Глядя на Документы для TestSuiteBuilder, возможно, я мог бы адаптировать приведенный выше код, добавив вызов метода addRequirements() TestSuiteBuilder, но я не могу понять, будет ли это делать, или должен использоваться для этого.
Если addRequirements будет и должен использоваться для исключения AndroidTestCases, как мне это назвать? Я не понимаю, какой аргумент я передам, документация гласит:
addRequirements(Predicate...<TestMethod> predicates)
//Exclude tests that fail to satisfy all of the given predicates.
Но я не могу найти ничего о существовании класса Predicate
или как это надо заселить для достижения моей цели.
Спасибо
3 ответа
Есть способ отключить / игнорировать тесты.
Смотрите эту ссылку
Я хотел исключить 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;
}
}
Я решил просто включить все, что я хочу явно вместо этого.
http://developer.android.com/reference/junit/framework/TestSuite.html
TestSuite, похоже, не имеет метода removeTestSuite или аналогичного, поэтому я не могу исключить какие-либо тесты, которые TestSuiteBuilder добавит в создаваемый тест. Буду признателен, если кто-нибудь сможет объяснить, как исключить / включить тесты, используя метод addRequirements(...).