2

У нас есть большой проект, который имеет несколько тысяч тестов в testuite, и полный тест testuite занимает очень много времени.Инкрементальный пробег testsuite

Я ищу инструмент, который я могу интегрировать в сборку Maven, которая будет запускать только те тесты, на которые может повлиять (зная охват кода для каждого), так как у некоторых покрытых кодов есть изменения.

Я прибегая к помощи, что и нашел несколько подобных вещей, но не идеально подходит:

  • экстази http://www.ekstazi.org/ выглядит точно так, но это не работает вне коробки с TestNG (используется в тесты), и это не с открытым исходным кодом
  • Infinitest https://infinitest.github.io/, кажется, сосредоточен главным образом на интеграции IDE - можно запускать тесты только по требованию (так же, как mvn infinitest)?
  • PIT http://pitest.org/ это не совсем то, что я искал, но он также должен проанализировать за испытание покрытия

Было бы очень полезно помнить, тестовое покрытие с (последним) мерзавцем совершать и запускать тесты против последний код изменяется.

Дальнейшие предложения и замечания по вышеуказанным приветствуются.

+0

Что вы подразумеваете под термином 'very long time'? Вы используете решение CI? И, как правило, вы должны запускать весь комплект тестов модулей, чтобы поймать вещи, о которых вы, возможно, не знаете ... – khmarbaise

ответ

1

Насколько я могу судить, Infinitest не предоставляет соответствующий плагин Maven, поэтому его невозможно использовать. Вы можете подумать о его создании, сделав неоценимый вклад в мир.

Насколько я вижу, он предоставляет довольно прочный API, поэтому писать плагин не должно быть большой проблемой. Вы можете сначала взглянуть на интерфейс InfinitestCore. Если вы используете среду CI, вам может потребоваться предоставить список файлов для Infinitest непосредственно из git diff --name-only HEAD~1, который будет создавать список файлов, измененных в последнем фиксации (в качестве примера, если вы запускаете свои сборки против каждой фиксации).

UPD. Похоже, существует обходной путь с участием Maven-EXEC-плагин для явного запуска Infinitest в сборке Maven: you can run 'mvn exec:exec' from the command line or from m2eclipse's Maven Build launcher to run Infinitest against your project. Я бы совет указав явную фазу сборки, на котором он должен быть запущен с помощью executions element in POM:

казни: Это важно иметь в виду, что плагин может иметь несколько целей. Каждая цель может иметь отдельную конфигурацию, возможно даже связывая цели плагина с другой фазой. исполнения настраивают выполнение целей плагина.

+0

Infinitest предназначен для запуска внутри Eclipse ide и сборки Maven .. – khmarbaise

+1

Да, но он работает от IDE или как отдельное приложение, но все еще не подключено как плагин Maven, поэтому возможно его запуск в Maven, созданный непосредственно с помощью определения POM. Однако я нашел обходное решение (добавленное к моему ответу). –

Смежные вопросы