Я не уверен, что мешает вашей «параллелизации тестового прогона», но вы могли бы сделать это с помощью правила, если хотите использовать пользовательскую аннотацию «игнорировать» вместо JUnit. Причиной этого является то, что JUnit обрабатывает тесты @Ignored на уровне Runner, особенно в BlockJUnit4ClassRunner.runChild()
(по умолчанию). Если бы вы могли найти способ использовать пользовательский Runner в Ant, вы могли бы найти его, чтобы довольно легко удовлетворить ваши потребности, но я не знаю, легко ли это сделать в Ant.
Как я уже упоминал, вы можете легко использовать другую аннотацию и правило для выбора методов для запуска. Я составил быстрый пример такого правила для github вместе с тестом, который использует его . В моем маленьком примере для переключения используется системное свойство, но вы также можете явно включить его для всего, о чем вы можете подумать, что вы можете получить здесь.
Вы можете клонировать и запустить этот пример с помощью:
git clone git@github.com:zzantozz/testbed tmp
cd tmp
mvn test -pl stackoverflow/9611070-toggleable-custom-ignore -q
mvn test -pl stackoverflow/9611070-toggleable-custom-ignore -q -D junit.invertIgnores
Единственным недостатком этого подхода, о котором я могу подумать, является то, что ваши тесты не будут должным образом помечены как «игнорируемые», потому что это также делается методом BlockJUnit4ClassRunner.runChild()
, и если вы посмотрите на ParentRunner.runLeaf()
(которому делегируется runChild()
), вы увидите, что уведомитель, то, что вам нужно, чтобы сообщать об игнорируемых тестах, не передается достаточно далеко, чтобы использовать его в правиле. Опять же, для этого вам понадобится пользовательский Runner.