Запускать тесты JUnit параллельно - PullRequest
5 голосов
/ 07 сентября 2011

При запуске модульных тестов Gradle может выполнять несколько тестов параллельно без каких-либо изменений самих тестов (то есть специальных аннотаций, участников тестирования и т. Д.). Я хотел бы добиться того же с муравьем, но я не уверен, как.

Я видел этот вопрос , но ни один из ответов на самом деле не подходит мне. Они также включают хаки с ant-contrib, специальные бегуны, настроенные с аннотацией @RunWith, некоторые другие специальные аннотации и т. Д. Мне также известно о TestNG, но я не могу заставить подключаемый модуль Eclipse переносить наши тесты - и у нас их около 10000, поэтому я не делаю это вручную!

Gradle не нуждается ни в каком из этого материала, так как мне сделать это в муравье? Я предполагаю, что Gradle использует специальный раннер, но если это так, он настроен как часть установки JUnit и не упоминается в каждом отдельном тесте. Если это так, то это нормально. Я просто не хочу идти и изменять c. 10000 юнит-тестов!

1 Ответ

6 голосов
/ 08 сентября 2011

Gradle не использует специальный бегун JUnit в строгом смысле этого слова. Он «просто» имеет сложную тестовую задачу, которая знает, как раскрутить несколько JVM, запустить подмножество тестовых классов в каждом из них (вызывая JUnit) и сообщить результаты в JVM, которая выполняет сборку. Там результаты объединяются, чтобы сделать его похожим на однопоточное выполнение теста. Это даже работает для сборок, которые определяют своих собственных слушателей теста.

Чтобы получить параллельное выполнение теста в Ant, вам понадобится задача Ant, которая поддерживает эту функцию (не уверен, существует ли она). Альтернативный вариант - импортировать сборку Ant в Gradle (ant.importBuild "build.xml") и добавить тестовое задание на стороне Gradle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...