Создайте свой собственный TestClassMethodsRunner
(он не задокументирован, или я его сейчас не нахожу).
A TestClassMethodsRunner
выполняет все тестовые случаи, и вы можете настроить отфильтрованный TestClassMethodsRunner
.
Все, что вам нужно сделать, это переопределить метод TestMethodRunner createMethodRunner(Object, Method, RunNotifier)
. Это простое хакерское решение:
public class FilteredTestRunner extends TestClassMethodsRunner {
public FilteredTestRunner(Class<?> aClass) {
super(aClass);
}
@Override
protected TestMethodRunner createMethodRunner(Object aTest, Method aMethod, RunNotifier aNotifier) {
if (aTest.getClass().getName().contains("NOT")) {
return new TestMethodRunner(aTest, aMethod, aNotifier, null) {
@Override
public void run() {
//do nothing with this test.
}
};
} else {
return super.createMethodRunner(aTest, aMethod, aNotifier);
}
}
}
С помощью этого TestRunner вы выполняете все тесты, которые не содержат строку «NOT». Другие будут игнорироваться :) Просто добавьте аннотацию @RunWith
с вашим классом TestRunner к вашему тесту.
@RunWith(FilteredTestRunner.class)
public class ThisTestsWillNOTBeExecuted {
//No test is executed.
}
@RunWith(FilteredTestRunner.class)
public class ThisTestsWillBeExecuted {
//All tests are executed.
}
В методе createMethodRunner
вы можете сравнить текущий тест со списком тестов, которые должны быть выполнены, или ввести новые критерии.
Удачи с этим!
Подсказки для лучшего решения приветствуются!