Можно ли запускать тесты JUnit из нескольких пакетов в Eclipse?

Можно ли запускать тесты JUnit для нескольких пакетов одновременно без создания наборов тестов вручную.

Например, если у меня есть иерархия:

code.branchone
code.branchone.aaa
code.branchone.bbb
code.branchtwo
code.branchtwo.aaa
code.branchtwo.bbb

Это возможно:

  1. Запустите все тесты в code.branchone и в дочерних пакетах
  2. Запустите все тесты, скажем, в code.branchone.aaa и code.branchtwo.bbb

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


person Community    schedule 05.01.2009    source источник
comment
Ни один из ответов ниже не работает. У меня точно такая же проблема. Я могу запустить все тесты в code.branchone.aaa, но если я перейду к корневому code.branchone, он говорит, что тест не найден с помощью средства запуска тестов «Junit 4». Имейте в виду, что code.branchone не имеет исходного кода.   -  person Bdoserror    schedule 05.01.2012
comment
Дополнительное замечание о путанице: у моего проекта (созданного кем-то другим) уже есть конфигурация запуска, которая работает из более высокого каталога в иерархии (кода). Я скопировал эту конфигурацию и изменил ее для подкаталога, который мне нужен, он все еще не работает, и эта спецификация каталога является единственной разницей между ними.   -  person Bdoserror    schedule 05.01.2012
comment
Хм, может быть, проблема в том, что тот, который работает, запускается из каталога, который является подпроектом (?) В основном проекте. например в этой настройке рабочая конфигурация запускается для src / it / java: Project (корень дерева) с 1 дочерним элементом, src / it / java И тот, который я хочу, является подкаталогом src / it / java, а в исходном виде общий родительский подкаталог, который я хочу запустить, не имеет собственной записи. например: Project (root) имеет src / it / java в качестве дочернего элемента, а srt / it / java имеет 2 дочерних элемента, sub1.subA и sub1.subB, и я хочу запустить все тесты из src / it / java / sub1   -  person Bdoserror    schedule 05.01.2012


Ответы (7)


Да, это возможно. По крайней мере, для меня самый простой способ - добавить класс набора тестов. Это может выглядеть так:

package tests;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

import tests.message.ATest;
import tests.validator.BTest;
import tests.validator.CTest;
import tests.validator.DTest;

@RunWith(Suite.class)
@SuiteClasses({ ATest.class, 
        BTest.class, 
        CTest.class, 
        DTest.class })
public class AllTests {

}

Это позволит вам протестировать любой класс, который вы импортируете, независимо от того, в каком пакете он находится. Чтобы запустить это в eclipse, вы просто щелкните правой кнопкой мыши класс AllTests и запустите его как тест JUnit. Затем он запустит все тесты, которые вы определили в @SuiteClasses.

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

person Community    schedule 17.02.2013
comment
Я не думаю, что есть способ использовать имена пакетов или подстановочные знаки с @SuiteClasses, не так ли? Я видел johanneslink.net/projects/cpsuite.jsp, burtbeckwith.com/blog/?p=52 и stackoverflow.com/questions/1293880 / но ни одно из них не является настолько хорошим решением, на которое я надеялся. - person jacobq; 02.10.2013
comment
Это помогло мне решить проблему, когда 2 тестовых примера мешали друг другу (по отдельности они были зелеными, но не выполнялись при последовательном выполнении). Хороший трюк :-) - person rlegendi; 30.10.2014
comment
java.lang.Exception: нет запускаемых методов - person Abdullah Nurum; 16.06.2020

По-другому:

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

введите описание изображения здесь

Затем откройте конфигурации запуска, создайте новую конфигурацию и затем установите «Запустить все тесты ...», как показано на изображении ниже.

введите описание изображения здесь

person Community    schedule 22.11.2012
comment
Только в src (корне пути к классам) он будет запускать все модульные тесты проекта. Если он выбран в конкретном пакете, он запускает тесты только в самом выбранном пакете, но не тесты из дополнительных пакетов. - person Heri; 22.12.2015

Возможно, это не совсем то, что было в исходном вопросе, но вы можете легко запустить все тесты всего проекта, просто щелкнув проект правой кнопкой мыши -> Запуск от имени JUnitTest. Не беспокойтесь о том, где находятся аннотированные классы, это будет сканироваться.

Это не работает, если применяется к папке test-src или к пакету с подпаками. На самом деле очень жаль -.-

person Community    schedule 03.07.2013

Я уверен, что ты сможешь немного подправить это. Создайте коллекцию свойства CLASSES_DIR и переберите ее в методе findClasses. (junit4)

http://burtbeckwith.com/blog/?p=52

person Jurgen Hannaert    schedule 05.01.2009
comment
Я также использовал это иначе, чем тот, который вы предложили, используя аннотации. Эта ссылка действительно полезна! - person oshai; 27.01.2011

Я верю, что вы можете добавить все свои тестовые пакеты в один каталог. Если вы щелкните правой кнопкой мыши по этому каталогу, то вы должны найти доступную опцию «запустить как -> JUnit test». Это запустит все тесты, содержащиеся в каталоге, и поймает все, что вы добавили. Любые новые тесты помещаются туда вместе с остальными, и какое бы имя у вас ни было, это не имеет значения. надеюсь, это поможет

person Community    schedule 05.01.2009

Конечно, щелкните правой кнопкой мыши нужные пакеты и выберите "Запуск от имени ... JUnit Test".

person Community    schedule 05.01.2009

В Eclipse в конфигурациях отладки / запуска у вас есть следующие параметры:

  1. Выполнить одиночный тест
  2. Запустить все тесты в выбранном проекте, пакете или исходной папке

Думаю, второй вариант - ваш друг в данном случае.

person Community    schedule 05.01.2009
comment
но он не позволяет запускать тесты из разных пакетов - person Eishay Smith; 27.09.2010