Ответ через пользовательский org.testng.IMethodSelector :
Его includeMethod () можно исключить любой метод , который мы хотим, как общественный не-аннотированных методов.
Однако, чтобы зарегистрировать пользовательские Java MethodSelector, вы должны добавить его в XMLTest например , управляемый любым TestRunner, что означает , что вам нужен собственный пользовательский TestRunner .
Но, чтобы создать пользовательский TestRunner, вам нужно зарегистрировать TestRunnerFactory через -testrunfactory вариант.
НО , что -testrunfactory никогда не принимается во внимание TestNG класса ... так что вам нужно также определить пользовательский класс TestNG:
- для того, чтобы переопределить метод настройки (карта),
- так что вы можете установить TestRunnerFactory
- TestRunnerFactory, который будет строить вам собственный TestRunner,
- TestRunner, который будет установлен на XMLTest экземпляр пользовательского XMLMethodSelector
- XMLMethodSelector, который будет создавать пользовательские IMethodSelector
- IMethodSelector которые исключат любые методы TestNG по вашему выбору!
Хорошо ... это кошмар. Но это также код-вызов, поэтому он должен быть немного сложным;)
Весь код доступен на DZone фрагментах .
Как обычно для кода вызова:
- один Java класс (и довольно много внутренних классов)
- копипаст класс в директории «источник / тест» (поскольку пакет «тест»)
- запустить его (аргументы не нужны)
Обновление от Mike Stone:
Я собираюсь принять это, потому что это звучит очень близко к тому, что я в конечном итоге делает, но я полагал, что я хотел бы добавить, что я сделал, как хорошо.
В принципе, я создал аннотацию групп, который ведет себя как собственность группы испытания (и другие) аннотаций.
Затем я создал GroupsAnnotationTransformer, который использует IAnnotationTransformer, чтобы посмотреть на все тесты и тестовые классах определяются, затем изменяет тест, чтобы добавить группы, которые прекрасно работают с группой включения и исключением.
Изменить сборку использовать новую аннотацию трансформатор, и все это прекрасно работает!
Ну ... один нюанс в том, что он не добавляет группу к методам, не тест ... потому что в то время я сделал это, был еще один аннотация трансформатора, который позволяет преобразовать НИЧЕГО, но это как-то не было включен в TestNG я использовал по какой-то причине ... так что это хорошая идея, чтобы сделать ваши до / после аннотированных метод alwaysRun = истинного ... что вполне достаточно для меня.
Конечный результат я могу сделать:
@Groups({ "myGroup1", "myGroup2"})
public class MyTestCase {
@Test
@Groups("aMethodLevelGroup")
public void myTest() {
}
}
И я сделал трансформаторную работу с подклассов и все.