Запуск одного теста JUnit в Eclipse

85

Если у меня есть набор тестов с несколькими тестами, когда я пытаюсь запустить один модульный тест, либо из контекстного меню редактора кода, либо из представления JUnit, он, кажется, настаивает на том, чтобы всегда запускать весь набор, а не одиночный тест. Есть ли способ отключить, чтобы изменить это поведение, чтобы я мог попросить запустить этот и только этот тест.

user14128
источник
11
Было бы неплохо, если бы вы выбрали лучший ответ, отметив зеленую отметку рядом с ответом.
guerda

Ответы:

96

В проводнике пакетов разверните класс. Он должен показать вам все методы. Щелкните правой кнопкой мыши тот метод, который вы хотите запустить, затем выберите «Запуск от имени» -> JUnit из контекстного меню (только что протестирован с Eclipse 3.4.1). Аналогичным образом работает выбор «Выполнить» для отдельной записи в представлении результатов JUnit для повторного запуска теста.

Фолькер Штольц
источник
3
К сожалению, это работает только для методов тестирования, которые напрямую реализованы в этом классе. Это не работает для унаследованных методов @Test.
Кристофер Барбер,
1
Обратите внимание, что, похоже, вам нужно щелкнуть имя метода. Щелчок внутри метода запустит весь класс. (Или, по крайней мере, для меня это так.)
emragins
Похоже, он работает только с одним конкретным «проводником пакетов», что более чем неудобно, когда дело доходит до быстрого поиска метода, который вы хотите протестировать. И даже после этого отладчик пропускает другие методы, что требует дополнительного времени. Должен быть способ получше ...
Macilias
и он тоже хрупкий ... теперь eclipse решила не пропускать другие тесты, работая таким образом :(
Macilias
27

Самый быстрый способ, который я знаю:

  1. Нажмите Ctrl+ Shift+ (перемещает курсор к объявлению текущего метода),
  2. нажмите Alt+ Shift+ x(или dдля отладки), затем нажмите t(горячая клавиша для «Запустить JUnit Test» ),
  3. проверить результат теста,
  4. нажмите Alt+, чтобы вернуться к предыдущей строке кода.

Если вы хотите запустить все тесты, вы можете пропустить шаги 1 и 4.

шнаттерер
источник
13

В Eclipse 3.5 это можно обойти, изменив средство запуска тестов на JUnit 3. Это будет работать только для тестов JUnit 3, но не для тестов JUnit 4. Вы можете изменить средство запуска тестов, выполнив следующие действия:

  1. Щелкните правой кнопкой мыши один из методов тестирования в проводнике структуры.
  2. Выберите Run As -> Run Configurations.
  3. На вкладке "Тест" выберите "Выполнить один тест".
  4. В раскрывающемся списке Test Runner выберите JUnit 3.

Это может работать и в других версиях.

Lucrussell
источник
Хороший звонок! Изменение "Test Runner" на "JUnit 3" в диалоговом окне конфигурации запуска сработало для меня в Eclipse 3.6.0 (Helios). Теперь я могу запустить единственный метод в тесте JUnit. FWIW, у меня никогда не было проблем с запуском отдельных тестовых классов JUnit 3 или 4 .
Адам Монсен,
Идеально, это сработало и для меня. Ответ выше этого не сделал, хотя, похоже, он получил больше голосов.
dreza
12

Это возможно в Eclipse Indigo с JUnit 4.8.2. Вы щелкаете правой кнопкой мыши метод, который хотите индивидуально протестировать на Outlineпанели, и выбираете Run As -> JUnit Test.

Вы даже можете выборочно щелкнуть правой кнопкой мыши имя метода тестирования в редакторе исходного кода и выбрать Run As -> Junit Test.

Wulfgarpro
источник
1
похоже, будет тестировать этот конкретный тестовый пример. Однако после этого он все еще продолжается с другими тестовыми примерами.
lwpro2
@ lwpro2 Вы должны использовать JUnit 4 (аннотации) для тестирования одного тестового примера. JUnit 3 (расширение TestCase) по-прежнему будет запускать все связанные тесты.
AnthonyW
1
wulfgar.pro Я сообщал @ lwpro2, что если вы запускаете свой тест JUnit с бегуном JUnit 4 (потому что, например, вы используете JUnit 4.8.2), ЕЩЕ ваш тест по-прежнему расширяет TestCase, вы не сможете запустить ни один тест сам по себе. Вы должны либо использовать средство запуска JUnit 3, либо преобразовать свой тест для использования аннотаций.
AnthonyW
спасибо за комментарии. Однако я использовал Junit4 с SpringJunit4ClassRunner. Во всяком случае, ничего страшного. комментирование аннотации происходит быстро.
lwpro2
это самый простой ответ
Jackson Tale
9

Не используйте Strg+, F11а горячую клавишу Alt+ Shift+ X-> T.
Затем Eclipse выполнит текущий открытый файл как тест JUnit. Зеленая кнопка воспроизведения запустит только последнюю выбранную конфигурацию запуска.

Для меня это хорошо работает с Alt+ Shift+ X-> T.

Герда
источник
Спасибо. Но предположим, что вы работаете над классом, который тестируется модульным тестом. Как при изменении класса запустить соответствующий ему UnitTest, не переключая окно на файл UnitTest?
bibstha
@bibstha Вы можете использовать Ctrl + 3, а затем ввести «rerun». Это позволяет повторно запустить последний тестовый пример JUnit. В Window-> Preferences-> General-> Keys вы можете назначить собственный ярлык для этого действия. На мой взгляд, подойдет Ctrl + Shift + F11.
guerda
9

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

Переместите курсор к имени метода, используя либо

  • Ctrl+ Shift+ Upили
  • Ctrl+ Shift+ Downили
  • Ctrl+ oзатем введите название метода

Как только ваш курсор окажется на имени метода (или прямо перед ним):

  • Alt+ Shift+ D-> T(Отладка)
  • Alt+ Shift+ X-> T(Выполнить)

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

Alt+Back

Вы почти получаете REPL-подобное поведение:

Ctrl+ Shift+ Upи Alt+ Shift+ X-> Tи Alt+Back

Вы также можете быстро установить точку останова:

Ctrl+ Shift+B

Адам Гент
источник
3

Щелкните правой кнопкой мыши где-нибудь на имени метода тестирования в файле и выберите «Выполнить» -> «Тест Junit». Я постоянно это делаю с Kepler и JUnit 4.

Кайл Дайер
источник
2

У меня была та же проблема, что и у других при использовании Eclipse 3.4.1 и JUnit 4 test runner - не удалось запустить одиночный тест. Но я нашел где-то еще предложение, которое решило проблему. Мой тестовый класс все еще расширял junit.framework.TestCase. Когда я прекратил расширять TestCase, все работало нормально, и я смог запустить отдельные тесты JUnit с помощью средства запуска тестов JUnit 4. Конечно, мне нужно было, чтобы аннотации JUnit 4 использовали статический импорт для методов assert, но я уже сделал это - я просто не удалил наследование TestCase.

Ghirschhorn
источник
1

Если у вас много тестов в более чем одном файле, и вы хотите запустить тесты только в определенном файле, вы можете щелкнуть этот файл правой кнопкой мыши и выбрать «Запускать как» -> «junit test». Теперь, если вы хотите запустить только один тест, содержащийся в файле с множеством тестов, я предполагаю (у меня здесь не установлено eclipse), что в представлении Outline будут перечислены все методы тестирования для файла, и вы, вероятно, сможете Щелкните правой кнопкой мыши один метод тестирования и выполните его как тест JUNit.

Надеюсь, это поможет.

Том
источник
1

Для запуска только один тестовый метод.
В (проводнике пакетов или проводнике проекта) разверните класс. Он должен показать вам все методы. Щелкните правой кнопкой мыши тот метод, который хотите запустить, затем выберите «Запуск от имени» -> JUnit в контекстном меню.
введите описание изображения здесь

Данило
источник
0

Для меня он также не работает в Eclipse 3.4.2, хотя он работал в предыдущих выпусках (я пробовал запускать один метод из проводника пакетов и один тест junit из представления junit)


источник
Запуск одного метода / теста из Package Explorer отлично работает в Eclipse 3.4.2.
Volker Stolz
0

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

ra9r
источник
0

Читая некоторые комментарии здесь, кажется, что вам может быть интересно запустить тесты для кода, который вы изменяете по мере его изменения, не теряя при этом внимания к коду, над которым вы работаете. Для этого есть плагин eclipse. См. Infinitest .

Unigeek
источник