JUnit 4 Тестові набори


98

Як створити тестові набори за допомогою JUnit 4?

Вся документація, яку я бачив, здається, не працює для мене. І якщо я використовую майстра Eclipse, це не дає мені можливості вибрати будь-який із створених мною тестових класів.


4
Завдяки Eclipse 3.7 Indigo майстер тестового набору тепер підтримує JUnit 4
Fabian Steeg

Відповіді:


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

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class TestSuite {
  //nothing
}

61

Ви можете створити такий набір. Наприклад, AllTestлюкс виглядатиме приблизно так.

package my.package.tests;

@RunWith(Suite.class)
@SuiteClasses({
    testMyService.class,
    testMyBackend.class,
    ...
})

public class AllTests {}

Тепер ви можете виконати це двома способами:

  1. клацніть правою кнопкою миші та запустіть у Eclipse як тест Junit
  2. створити виконувану програму Java; Основний клас = 'org.junit.runner.JUnitCore' і Args = 'my.package.tests.AllTests'
  3. запустити з командного рядка:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests

Додало б ще більше VoteUps для CMDLine :)
Gruber

9

Я думаю, що TestSuite вийшов з ласки. Це, можливо, був стиль раніше 4.x, але це не зараз, наскільки я знаю.

Я просто коментую потрібні тести, а потім запускаю клас. Усі анотовані тести виконуються. Я можу використовувати Ant, але більшу частину часу я маю IntelliJ запускати їх для мене.


11
Я можу помилитися, але я думаю, що TestSuite все ще добре, коли нам потрібно вказати порядок тестів, особливо в тестах автоматизованої інтеграції, де тестування менших сценаріїв повинно постати перед складнішими сценаріями.
bertie

@duffymo Я вважаю ваш коментар цікавим, оскільки мене до цього часу тренували в передній
план

6
Якщо у вас є більша кількість тестів, різних функціональних областей / модулів, відмінність 'core' та допоміжні / повільніші / дорогі непрофільні тести - з будь-якої з цих причин - ви структуруєте тести в TestSuite.
Thomas W

1
Ви можете використовувати @SuiteClassанотацію в декількох класах, а можна вкладати сюїти в люксах. Думка щодо їх організації в 3.x досі повністю діє (і її слід використовувати). Ви можете структурувати все точно так само, як ви робили раніше; ви просто використовуєте синтаксис анотацій замість TestSuite.suite(). TestSuiteКористуватися над анотацією насправді немає користі, і ви можете скористатися всіма вдосконаленнями JUnit 4, якщо використовуєте організаційно еквівалентну примітку.
Грім

3

Ось кроки для створення набору JUnit у затемненні:

  1. У вікні «Провідник пакунків» з точки зору затемнення «Java» виберіть тест (-ів) одиниць у своєму пакеті всередині проекту «затемнення яви».
  2. Клацніть правою кнопкою миші будь-який із вибраних тестів.
  3. У спливаючому меню виберіть Нове, Інше…
  4. Відкрийте папку «Java», а потім відкрийте папку «JUnit»
  5. Виберіть "JUnit Test Suite", а потім натисніть кнопку "Далі"
  6. Виберіть кнопку "Готово"
  7. Результат: Створений файл набору 'AllTests.java', з тестами автоматично
  8. Виберіть кнопку Запуск у затемненні
  9. Результат: всі тести в пакеті
  10. Тепер ви можете вказати на цей набір файлів за допомогою інструменту безперервної інтеграції ANT, Jenkins або іншого інструменту безперервної інтеграції.

Інформація про версію: це для затемнення Neon та JUnit 4. Ви також можете вибрати JUnit 3, перш ніж вибрати "Finish" на кроці 6.


Чи можете ви опублікувати файл build.xml, який показує, як запустити цей тестовий набір з ANT?
LiborStefek

1

У верхній частині голови створіть TestSuite та виклику addTests. Якщо ви хочете, щоб перегляньте спробуйте будь-яку віконку відкритого коду, наприклад, сплячку або щось із апачу, і подивіться у тестовий каталог джерела для набору тестів ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.