Запускать Junit-тесты из нескольких проектов удобно быстро в Eclipse - PullRequest
20 голосов
/ 16 июля 2009

Есть ли способ запустить JUnit-Tests из нескольких проектов удобно быстро в Eclipse?

JUnit-Runner позволяет вам определить пакет или папку, из которых выполняются все содержащиеся в нем тесты.

Есть ли способ сделать это с помощью тестов из нескольких проектов в Eclipse? Желательно, чтобы это было через Junit-Runner. Если есть какой-то способ сделать это быстро с помощью Ant-задания (поэтому не зависите от полной сборки с помощью ant), это было бы неплохо.

Ответы [ 4 ]

8 голосов
/ 19 ноября 2010

На самом деле довольно просто выполнять тесты JUnit для нескольких проектов из Eclipse. Взгляните на Classpath Suite . Это не стандартная версия JUnit, но вы не упомянули, откуда появилось это требование, поэтому я не уверен, повлияет ли это на вас.

Вся информация об использовании находится на этой странице, но в итоге:

  1. Создайте проект Eclipse в зависимости от всех проектов, которые вы хотите протестировать.
  2. Напишите простой набор тестов, включающий все:

    @RunWith(ClasspathSuite.class)  
    public class MySuite {}
    
4 голосов
/ 17 июля 2009

Вы не можете сделать это через пользовательский интерфейс. Рассматривая точки расширения, для элемента JUnit самого высокого уровня будет собираться проект. Я полагаю, что вы могли бы написать плагин для добавления дополнительного элемента / ярлыка контекста для рабочего набора, сделать рабочие наборы элементами верхнего уровня в проводнике пакетов и сгруппировать проекты, которые вы хотите протестировать вместе, под этим рабочим набором. Проблемы с этим заключаются в том, что у вас будут проблемы с определением правил контекста для включения / выключения вклада «запуск от имени», и я не уверен, что семантика распространяется на рабочие наборы. Поэтому вам нужно написать какую-то оболочку для итерации содержащихся проектов и сбора их тестовых типов. Это кажется интересной маленькой проблемой. Я мог бы поиграть с этим после школы сегодня.

Еще один (немного менее) хакерский способ - создать другой проект с зависимостями проекта от всех ваших целевых проектов, а затем использовать связанные ресурсы, чтобы перенести все типы тестов в новый проект (я разместил ответ ). перед этим описано, как связать источники между проектами). Конечно, если вы сделаете это, вам также понадобится управлять зависимостями тестового проекта.

Если вы создаете TestSuite для каждого проекта и еще один uber TestSuite, который ссылается на все наборы проектов, вы должны проверить, включен ли каждый тест, который подвержен ошибкам.

Если вам не нравится заглядывать в плагины или связанные ресурсы, вам, вероятно, лучше всего использовать Ant.

3 голосов
/ 16 июля 2009

Вы можете определить отдельный проект, который зависит от других проектов, который содержит набор, ссылающийся на отдельные тесты или наборы из разных проектов. Примерно так:

@RunWith(Suite.class)
@Suite.SuiteClasses( { FirstProjectSuite.class, SecondProjectSuite.class} )
public class AllSuites { }
0 голосов
/ 16 июля 2009

Я не уверен, что вы не можете сделать это из пользовательского интерфейса, но из ant это возможно, даже если вы не создаете свои плагины, используя ant. Тем не менее, этот метод не так тривиален, но как только он настроен, все круто; o)

Проверьте здесь для получения дополнительной информации:

http://www.eclipse.org/articles/article.php?file=Article-PDEJUnitAntAutomation/index.html

...