list junit annotations
Цей посібник пояснює все про анотації JUnit, а також Порівняння анотацій у JUnit 4 проти JUnit 5:
Ми вивчили різні способи виконання тестових кейсів JUnit і побачили, як створити та виконати набір тестів у нашому попередньому уроці.
У цьому підручнику ми познайомимось із визначним аспектом JUnit, який називається Анотації. Починаючи з JUnit 4, анотації існують і роблять JUnit дуже простим, вигідним та набагато зручнішим у використанні.
Анотації - це Java API, що дозволяє JVM розпізнавати тип методу, визначений у тестовому класі. Існують «анотації зворотного зв'язку із життєвими циклами», які часто використовуються.
=> Завітайте сюди, щоб навчитися JUnit з нуля.
Що ви дізнаєтесь:
Анотації JUnit - JUnit 4 проти JUnit 5
Виконання тесту проходить різні етапи життєвого циклу, як зазначено нижче:
- Перед початком тестування необхідно виконати певні заходи щодо ініціювання заняття.
- Деякі інші заходи, які слід виконати до початку виконання тестового кейсу.
- Певні заходи, які необхідно виконати після виконання тесту та
- Певні дії в кінці виконання всіх тестів у класі.
Для того, щоб переконатися, що ці дії виконуються на кожному етапі життєвого циклу Java, на місці повинні бути певні визначені користувачем методи або функції, які називаються ' методи зворотного виклику життєвого циклу .
Поведінка цих методи зворотного виклику життєвого циклу визначається вбудованим анотації зворотного дзвінка за життєвий цикл ' використовується в JUnit.
Приклад: Спробуємо зробити це ще простішим, пов’язавши ці методи зворотного виклику та анотації життєвого циклу з прикладом тестування кавового автомата.
- Метод machineReady (), який перевіряє наявність води, молока та кавових зерен перед увімкненням машини.
- Інший метод startMachine (), який вмикає апарат, може знадобитися новий паперовий стаканчик у машині.
- Тестовий кейс, який перевіряє Гаряча вода () ’.
- Ще один тестовий приклад, який перевіряє ' Капучино () ’.
- Ще один тестовий приклад, який перевіряє ' ExpressoCoffee () ’.
- Інший метод “ throwCup () ”, Який кидає використані чашки у смітник.
- Метод на рівні класу “ throwTrashandSwitchOff () ”Викидає переливну рідину з лотка в тазик і вимикає машину.
Отже, у наведеному вище прикладі, ось як слід життєвий цикл тесту:
- startMachine () буде запускатися до кожного тесту - Гаряча вода (), Капучино () та ExpressoCoffee () працює.
- Кожна з цих тестових команд також відповідає методу throwCup ().
- Методи machineReady () та throwTrashandSwitchOff () - це метод рівня класу, який запускається лише один раз для класу. Метод machineReady () запускається один раз, поки клас ініціює виконання. Метод throwTrashandSwitchOff () запускається один раз після завершення виконання всіх тестів.
Тепер виникає питання, то це лише прості методи Java, то:
Команда ls в unix з прикладами
- Як ми будемо наполягати на запуску JVM machineReady () лише один раз на рівні класу та throwTrashandSwitchOff () в кінці виконання класу?
- Як ми змусимо JVM це знати startMachine () та throwCup () потрібно запустити перед запуском кожного тестового кейсу та після завершення кожного тестового кейсу відповідно?
- Як ми можемо змусити JVM визначити, що ці методи Гаряча вода (), Капучино () та ExpressoCoffee () чи потрібно запускати тестові кейси?
Відповідь: Єдина відповідь на вищезазначені запитання полягає в тому, що анотації зворотного виклику життєвого циклу роблять усю необхідну магію.
(На даний момент припустимо, що ми створюємо цей клас у JUnit 4)
Анотації життєвого циклу - @BeforeClass, @AfterClass, @Before, @After, і @ Тест є реальними відповідями на вищезазначені три запитання. Ми майже впевнені, що, прочитавши наведені нижче вказівки, ви зрозумієте з анотаціями зворотного виклику життєвого циклу та його робочим процесом.
- Анотуйте метод machineReady () за допомогою @BeforeClass і JVM змусить його запуститися один раз під час початку заняття.
- Анотуйте метод throwTrash () за допомогою @Після занять і JVM змусить його запуститися один раз в кінці класу.
- Анотуйте метод startMachine () за допомогою @ Перед тим і JVM запускатиме його перед запуском кожного тестового випадку.
- Анотуйте метод throwCup () за допомогою @Після і JVM запустить його після виконання кожного тесту.
- Коментуйте кожен із цих методів Гаряча вода (), Капучино () та ExpressoCoffee () за допомогою @ Тест і JVM знає, що це основні тестові приклади для класу JUnit, які потрібно виконати.
Давайте швидко поглянемо на Анотації зворотного виклику життєвого циклу JUnit для JUnit 4 проти JUnit 5
АНОТАЦІЯ 4 ЧЕРВНЯ | АНОТАЦІЯ 5 ЧЕРВНЯ | |
---|---|---|
@RepeatedTest | 1.JUnit 5 підтримує повторне виконання тестового методу протягом певної кількості разів за допомогою анотації @RepeatedTest | |
@ Перед тим | @BeforeEach | |
@Після | @AfterEach | |
@BeforeClass | @BeforeAll | |
@Після занять | @Після всього | |
@ Тест | @ Тест |
Послідовний робочий процес Анотації життєвого циклу
Нижче наведено послідовний робочий процес анотацій життєвого циклу для JUnit 4:
- Метод, котрий коментується @BeforeClass, виконується один раз на початку класу.
- Метод, котрий коментується @Before, виконується перед початком Testcase 1.
- Метод Testcase1, позначений @Test, є тестом у класі.
- Метод, котрий коментується @After, запускається після завершення Testcase 1.
- Метод, котрий коментується @Before, виконується перед початком Testcase 2.
- Метод Testcase2, позначений @Test, є тестом у класі.
- Метод, котрий коментується @After, запускається після завершення Testcase 2.
- Метод, котрий коментується @AfterClass, виконується один раз в кінці класу після того, як виконуються тестові кейси 1 і 2.
Послідовний робочий процес анотацій життєвого циклу для JUnit 5 є таким:
- Метод, котрий коментується @BeforeAll, виконується один раз на початку класу.
- Метод, котрий коментується @BeforeEach, виконується до початку Testcase 1.
- Метод Testcase1, позначений @Test, є тестом у класі.
- Метод, котрий коментується @AfterEach, запускається після завершення Testcase 1.
- Метод, котрий коментується @BeforeEach, виконується перед початком Testcase 2.
- Метод Testcase2, позначений @Test, є тестом у класі.
- Метод, котрий коментується @AfterEach, запускається після завершення Testcase 2.
- Метод, котрий коментується @AfterAll, виконується один раз в кінці класу після того, як виконуються тестові кейси 1 і 2.
Розробка кожної анотації
У цьому розділі давайте глибоко зануримось і детально зрозуміємо, що робить кожна з життєвих циклів анотації зворотного виклику:
@Before (JUnit 4) / @ BeforeEach (JUnit 5):
- Анотований метод виконується перед виконанням кожного тестового методу в тестовому класі.
- Цю анотацію можна використовувати, коли ви хочете, щоб ресурси або дані тесту були налаштовані безпосередньо перед початком кожного тесту.
- Наприклад, якщо в тестовому класі JUnit є 5 тестових випадків, то метод, котрий коментується @ Before / @ BeforeEach, виконується 5 разів перед кожним виконанням тестового випадку.
@After (JUnit 4) / @ AfterEach (JUnit 5):
- Анотований метод виконується після виконання кожного тестового методу в тестовому класі.
- Цю анотацію можна використовувати, коли ви хочете звільнити використані ресурси або тестові дані після кожного запуску тестового випадку.
- Наприклад, якщо в тестовому класі JUnit є 5 тестових випадків, то метод, анотований @ After / @ AfterEach, виконується 5 разів після виконання тестових кейсів.
@BeforeClass (JUnit 4) / @ BeforeAll (JUnit 5):
- Анотований метод виконується до того, як будуть виконані всі методи тестування в тестовому класі.
- Цю анотацію можна використовувати, коли ви хочете налаштувати ресурси або тестові дані на рівні класу.
- Оскільки цей метод коментується @ BeforeClass / @ BeforeAll виконується лише один раз для тестового класу, а копія методу ділиться між класами, і метод повинен бути зазначений статичний.
- Наприклад, якщо в тестовому класі JUnit є 5 тестових випадків, то метод, котрий коментується @ BeforeClass / @ BeforeAll, виконується один раз за тестовий клас перед тим, як ініціювати будь-який тестовий кейс.
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5):
- Анотований метод виконується після того, як всі тестові методи в тестовому класі виконуються.
- Цю анотацію можна використовувати, коли ви хочете звільнити використані ресурси або тестові дані на рівні класу.
- Оскільки цей метод коментується @ AfterClass / @ AfterAll виконується лише один раз для тестового класу, а копія методу ділиться між класами, метод повинен бути зазначений статичний.
- Наприклад, якщо в тестовому класі JUnit є 5 тестових випадків, то метод, котрий коментується @ AfterClass / @ AfterAll, виконується один раз для кожного тестового класу після завершення всіх тестових випадків.
@Test (JUnit 4 & JUnit 5):
- Анотація @Test є загальною для JUnit 4, а також JUnit 5. Анотовані методи представляють тестові приклади в класі.
- У класі JUnit може бути кілька методів, кожен з яких анотовано @Test. Це означає, що клас може мати кілька тестових випадків.
- Існують різні атрибути або параметри для перевірки, який з них можна передати. Ви можете додати вимушений тайм-аут для тестового випадку або додати виняток. Це буде детально висвітлено в окремому підручнику.
- Анотований метод не може бути приватним або статичним і не може повертати будь-яке значення.
- Метод @Test повинен бути оголошений загальнодоступним у JUnit 4, тоді як Junit 5 дозволяє тестовий сценарій, визначений без модифікатора доступу „public”, оскільки він вважає „no modifier access” „загальнодоступним” за замовчуванням.
Основний приклад тесту JUNIT
Основний ЧЕРВЕНЬ 4 приклад для анотацій @BeforeClass, @Before, @Test, @After і @AfterClass був показаний через код із поясненням у нашому попередньому навчальному посібнику «Тестові прилади».
Давайте розглянемо основне ТОП 5 Програма для демонстрації роботи анотацій зворотного дзвінка @BeforeAll, @BeforeEach, @Test, @AfterEach та @AfterAll.
Код для JUnit5Program.java:
public class JUnit5Program { @BeforeAll public static void preClass() { System.out.println('@BeforeAll – the annotated method runs once before all other methods execute'); } @BeforeEach public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('@BeforeEach – the annotated method executes before each test '); } @Test public void test_JUnit1() { System.out.println('@Test – this is test case 1'); } @Test public void test_JUnit2() { System.out.println('@Test – this is test case 2'); } @Test public void test_JUnit3() { System.out.println('@Test – this is test case 3'); } @AfterEach public void tearDown() { System.out.println('@AfterEach – the annotated method executes after each test executes'); System.out.println('_______________________________________________________
'); } @AfterAll public static void postClass() { System.out.println('@AfterAll – the annotated method runs once after all other methods execute'); } }
Під час виконання файлу класу наведений нижче результат відображається у вікні консолі.
Додаткові примітки - JUnit 4 проти JUnit 5
Є багато додаткових анотацій, які використовуються для конкретних цілей. Ми побачимо список анотацій для JUnit 4 проти JUnit 5 та коротко про мету, яку він служить.
У наступних навчальних посібниках буде детальний підручник щодо кожної з цих анотацій.
АНОТАЦІЯ 4 ЧЕРВНЯ | АНОТАЦІЯ 5 ЧЕРВНЯ | Короткий опис |
---|---|---|
@FixMethodOrder | @TestMethodOrder & @Order | 1. Ці анотації дозволяють користувачеві вибрати порядок виконання методів у тестовому класі |
@Rule & @ClassRule | @ExtendWith | 1. @Rule - Анотація розширена з класу TestRule, який допомагає застосовувати певні правила до тестових кейсів. 2. Наприклад: створення тимчасової папки до виконання тестового кейсу та видалення папки після виконання можна встановити за допомогою Правила. 3. @Rule доступний лише в JUnit 4, який можна використовувати в JUnit 5 Vintage, однак @ExtendWith забезпечує більш точну функцію для JUnit 5 4. Подібним чином, глобальний тайм-аут можна встановити за допомогою @Rule. |
НС | @TestFactory | 1. Ця анотація підтримується лише JUnit 5 і допомагає створювати динамічні тести або тести виконання. 2. Він повертає потік даних як збір і не може використовувати анотації зворотного виклику життєвого циклу |
НС | @ Вкладено | 1.Ця анотація підтримується лише JUnit Jupiter 2.Це допомагає нам створювати вкладені тестові кейси. 3. Наприклад, клас 1 із тестовим корпусом 1 може мати @ Вкладений клас 2 із тестовим корпусом 2. Це робить тестовий корпус 2 вкладеним тестовим корпусом до тестового корпусу 1. Отже, тестовий корпус 1 виконується, а потім тестовий файл 2 виконується. 4.Якщо анострація @Nested не використовується, вкладений клас не буде виконуватися. |
@ Категорія | @Tag | 1.Ця анотація допомагає мітити та фільтрувати тести 2. Ви можете включити тести для виконання або виключити їх, відфільтрувавши на основі категорій, до яких вони потрапляють. |
@RunWith (Параметризований.клас) @ Параметризовано. Параметри | @ParameterizedTest та @ValueSource | 1. Ця анотація використовується для запуску методу з варіаційними варіантами даних кілька разів. 2.JUnit 4 підтримує @RunWith і @Parameters, тоді як JUnit 5 Юпітер підтримує @ParameterizedTest з @ValueSource |
@DisplayName | 1. Визначене користувачем ім'я може бути надане методу тестування або класу для цілей відображення. | |
@TestInstance (LifeCycle.PER_CLASS) та @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5 підтримує конфігурацію життєвого циклу тестів. 2. І JUnit 4, і 5 дотримуються типового зворотного виклику життєвого циклу методу, тоді як також можна виконати конфігурацію для кожного класу. |
Список літератури => JUnit 4 , ТОП 5
Висновок
- Ми дізналися про анотації зворотного виклику життєвого циклу та послідовний робочий процес, в якому методи тестування виконуються на основі їх анотацій.
- Ми вивчили анотації для JUnit 4 та анотації для JUnit 5.
- Ми також дізналися про додаткові анотації, які підтримує JUnit 4, і ті, які підтримують лише JUnit 5.
=> Тут слідкуйте за простими навчальними серіями JUnit.
Рекомендована література
- Що таке тестовий пристрій JUnit: Підручник з прикладами JUnit 4
- Тести JUnit: Як написати приклади тестів JUnit на прикладах
- Підручник з JUnit для початківців - що таке тестування JUnit
- Завантажте, встановіть і налаштуйте JUnit в Eclipse
- Кілька способів виконання тестів JUnit
- Вступ до JUnit Framework та його використання в сценарії селену - Підручник з селену No11
- Прихований список для масиву та інші колекції в Java
- Методи списку Java - Список сортування, Містить, Список Додати, Список видалити