Хадсон проводит одни тесты, а другие нет.

У меня есть управляемый Maven Java-проект, который включает тесты JUnit - ничего необычного. Недавно у меня на машине появились неработающие сборки, но Хадсон остался доволен. Я понял, что внес изменение, нарушающее модульный тест, но заметил, что Хадсон не запускал модульный тест. Большинство моих тестов прошли нормально, но все в одном из моих пакетов полностью отсутствовало. Не указано как «пропущено», но на самом деле отсутствует.

Я не настраивал этот экземпляр Hudson, и я не гуру, поэтому я не был уверен, с чего начать. В произвольном порядке:

  • Я просмотрел страницу настроек проекта, скопировал точную используемую командную строку Maven и запустил ее локально. В POM есть некоторые настройки профиля для Hudson, поэтому я подумал, что стоит попробовать. Отсутствующие тесты все еще выполняются (и терпят неудачу).
  • Я попытался взглянуть на старые казни, чтобы увидеть, не было ли это недавним изменением. К сожалению, мы храним только 5 старых сборок, так что тупик.
  • Я внимательно проверил POM, чтобы увидеть, может ли что-нибудь когда-либо привести к исключению тестов - не гений Maven, но я могу довольно уверенно сказать, что ничего не должно быть, и в любом случае это не имеет значения из-за пули №1
  • Я скачал рабочее пространство Hudson. Интересно, что под /target есть каталог test-classes, в котором есть .class файлы для всех отсутствующих тестов, но /target/surefire-reports не имеет подходящих выходных файлов.

Я чувствую, что мне не хватает какой-то настройки где-то или, по крайней мере, какого-то файла журнала, который указывал бы, как это происходит - возможно, тесты не работают так плохо как взорвать процесс Surefire, который их вызвал, прежде чем он сможет написать о сбое? - но, как я уже сказал, Hudson newb. Каким должен быть мой следующий шаг?


ОБНОВЛЕНИЕ: локально установил Jenkins и попытался воспроизвести. Я схожу с ума: он по-прежнему не может запустить довольно много тестов, даже если я сам захожу в систему, перехожу в рабочую область Jenkins и создаю

  • под моей учетной записью
  • с использованием моего собственного локального репозитория m2 (с сетевого диска)
  • с использованием тех же двоичных файлов Maven / Java (с сетевого диска)
  • под управлением той же ОС

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


person Coderer    schedule 04.08.2011    source источник
comment
Если вы можете каким-то образом войти в поле Hudson и стать пользователем, который запускает сборки Hudson, запустите ту же команду Maven и посмотрите, что произойдет.   -  person Ryan Stewart    schedule 05.08.2011
comment
Каковы ваши цели и возможности (в конфигурации вакансии)? можешь выложить скриншот своей конфигурации? Спасибо.   -  person Rudy    schedule 16.08.2011
comment
К сожалению, этот Hudson находится во внутренней сети и удален из Интернета, поэтому сделать снимок экрана нетривиально. Я работаю над интерактивным воспроизведением проблемы «Тесты не выполняются»; если я не смогу отследить это, я прослежу здесь.   -  person Coderer    schedule 16.08.2011


Ответы (2)


У меня возникла именно эта проблема, и я готов поспорить, что некоторые из ваших тестов не следовали стандартному соглашению об именах; * Test.java. По умолчанию Surefire выбирает только те тесты, которые соответствуют определенному соглашению об именах; http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html

person Ben Logan    schedule 29.12.2011
comment
У меня создалось впечатление, что в этом разница между JUnit 3 и JUnit 4. Нет? - person Coderer; 29.12.2011
comment
Описанная здесь проблема может быть вызвана несколькими причинами. Возможно, вы правы, но мое объяснение все еще возможно. В моем сценарии я использовал TestNG, и я просто не осознавал, что по умолчанию плагин Maven ожидает, что тестовые классы будут строго названы. Невозможно узнать, была ли это проблема первоначального автора. - person Ben Logan; 10.01.2012

Я почти уверен, что это не по вине Хадсона и даже не по вине Maven. Я думаю, что это ошибка JUnit, и я разберусь с ней в другом вопросе.

person Coderer    schedule 23.09.2011