multiple ways execute junit tests
Цей підручник показує кілька способів виконання тестів JUnit, таких як запуск як тест JUnit, використання комбінаційних клавіш або запуск тесту JUnit із командного рядка тощо:
Ми побачили, як писати основні тестові кейси JUnit і застосовувати підхід до тестових пристосувань як одну з найкращих практик програмування для JUnit у нашому попередньому підручнику.
У цьому підручнику давайте розглянемо різні способи, якими ми можемо використовувати тести для JUnit. Ви будете здивовані, подивившись на кількість доступних варіантів запуску цих тестових випадків.
=> Тут слідкуйте за простою навчальною серією JUnit.
Що ви дізнаєтесь:
- Різні способи виконання тестів JUnit
- # 1) Запустити як тест JUnit
- # 2) Запустіть останній виконаний тест JUnit за допомогою опції меню
- # 3) Запуск за допомогою комбінаційних клавіш
- # 4) Виконайте лише один метод тестування в класі
- # 5) Запустіть тести JUnit з командного рядка
- # 6) Запустіть Test Suite, використовуючи Testrunner Class
- # 7) Запустіть тестові кейси JUnit за допомогою Maven
- Висновок
- Рекомендована література
Різні способи виконання тестів JUnit
Для виконання тестів JUnit існують певні способи, за допомогою яких ви можете запустити один файл класу з одним або декількома методами тестування за допомогою наступних параметрів:
- Параметр «Запустити як тест JUnit».
- Запустіть останній виконаний тест JUnit через опцію меню.
- Запустіть, використовуючи комбінації клавіш.
- Запустити лише один метод тестування в класі.
- Пройдіть через командний рядок.
- Запустити за допомогою файлу класу Testrunner.
- Запустите також за допомогою Maven.
Примітка: Виконання тесту JUnit через Maven буде розглянуто в окремому посібнику для JUnit Maven.
Повторюючи це, у цьому підручнику ми дізнаємося, як кілька тестів можна згрупувати в набір тестів і як можна запустити набір різними способами. Крім того, він повинен деталізувати певну відповідну та пов'язану з цим додаткову інформацію.
# 1) Запустити як тест JUnit
Найпростіший спосіб, яким можна виконати тести JUnit:
Спосіб 1:
- Клацніть правою кнопкою миші на файлі класу у поданні сценарію
- Виберіть Запустити як -> Тест JUnit
- Файл класу виконується.
Спосіб 2:
- Аналогічним чином ви можете вибрати файл класу у поданні Провідника пакетів
- Клацніть файл правою кнопкою миші
- Виберіть Запустити як -> Тест JUnit
- Файл класу виконується.
Примітка: Таким чином ви можете виконувати по одному файлу класу за раз.
# 2) Запустіть останній виконаний тест JUnit за допомогою опції меню
Ви можете запустити файл класу JUnit, тримаючи файл класу відкритим у редакторі. Перейдіть у верхнє меню Затемнення => Виберіть Виконати => Виконати . Варіант Виконати -> Виконати в основному означає повторне тестування, яке ви пройшли останнім.
Давайте розглянемо клас JUnit з декількома методами / тестами для кращої ясності того, як Біг-> Біг роботи:
- Сценарій 1 : Якби ви запустили єдиний метод за допомогою @Test, а потім при натисканні Біг-> Біг , єдиний метод, який виконувався останнім, запускався лише цього разу, а не весь клас JUnit.
- Сценарій 2 :Тоді як ти запустив весь клас раніше, Біг-> Біг перезапустить весь файл класу.
Тепер, коли ми знаємо Run-> Run запускає тест, який ви виконували останнім, це приведе нас до питання якщо ви можете змінити налаштування параметра Виконати-> Виконати?
Відповідь на запитання - Так, перевагу параметра Виконати-> Виконати можна змінити. Існує певна конфігурація, прикріплена до Run-> Run.
Ось як ви можете це зробити:
до) Налаштування запуску Eclipse в основному за замовчуванням запустити вибраний ресурс або активний редактор, якщо його можна запустити .
Отже, що означає налаштування за замовчуванням - «Запустити вибраний ресурс або активний редактор, якщо його можна запустити»?
Відповідь на це полягає в тому, що він не буде запускати програму, яку ви запустили останньою, скоріше він буде повторювати останню запущену програму для активний редактор .
б) Тоді як змінити налаштування за замовчуванням?
Відповідь на це полягає в тому, що ви можете змінити налаштування за замовчуванням у Eclipse для запуску останньої запущеної програми незалежно від активного редактора ти маєш.
Нижче наведено, як ви змінюєте перевагу параметра Виконати, використовуючи Виконати -> Виконати:
- Перейдіть до Windows => Налаштування => Запуск / Налагодження => Запуск
- «Запуск операції» має перемикач за замовчуванням - ' Запустіть раніше запущений додаток ' вибраний за другим варіантом Запустіть вибраний ресурс або активний редактор. Якщо не запускається : ’.
- Можливо, вам доведеться змінити цю перевагу на перший перемикач, тобто ' Завжди запускайте раніше запущений додаток '.
# 3) Запуск за допомогою комбінаційних клавіш
Ви можете вибрати файл класу з подання сценаріїв або подання Провідника пакетів і скористатися наведеними нижче комбінаційними клавішами для виконання тестів JUnit:
- Натисніть клавіші ALT + SHIFT + X, T для того, щоб виконати файл класу JUnit.
- Альтернативою цьому може бути преса ALT + R, потім CTRL + F11 для виконання файлу класу JUnit. ALT + R, потім CTRL + F11 - це ярлик для пункту меню Виконати -> Виконати
# 4) Виконайте лише один метод тестування в класі
Іноді вам може знадобитися запустити один метод тестування JUnit.
У випадку, якщо у файлі класу JUnit є більше одного методу:
- Ви можете вибрати або розмістити курсор на назві методу в поданні сценарію.
- Використовуйте або згадані вище клавіші швидкого доступу, або варіанти, передбачені вище, щоб виконати лише вибраний вами спосіб.
Примітка: ALT + SHIFT + X, T може запускати вибрані методи, як очікувалося. Однак, якщо ви хочете запустити певний метод у класі JUnit, він повинен бути тестовим кодом, анотованим @Test, інакше він відображає помилку ініціалізації.
Іншими словами, якщо ви виберете методи під @Before або @After (будь-яка анотація, крім @Test), тоді виконання конкретного методу призведе до помилки.
# 5) Запустіть тести JUnit з командного рядка
Як ви запускаєте будь-які файли класу Java через командний рядок, ви також можете компілювати та запускати файли класу JUnit через командний рядок.
Ми розглянемо наведені нижче підтеми тут, щоб зрозуміти, як ми можемо запускати тести JUnit через командний рядок:
- Як скомпілювати тест JUnit у командному рядку?
- Як запустити тест JUnit у командному рядку?
- Додаткова інформація про виконання командного рядка.
- Як виправити невизнану помилку команди для команди javac?
- Переваги запуску тестів за допомогою командного рядка.
# 5.1) Як скомпілювати тест JUnit у командному рядку?
Передумовою компіляції та запуску файлу класу JUnit через командний рядок є:
- Спочатку додайте відповідні JAR-файли jar у шлях до класу.
- Встановіть змінні середовища, як це було згадано в Налаштування JUnit підручник.
- Потім скомпілюйте файл класу JUnit.
- Синтаксис компіляції файлу класу JUnit через командний рядок:
javac -cp junit-4.0.0.jar;. JUnitProgram.java
Тут javac - це компілятор Java, який використовує опцію -cp.
Команда javac -cp шукає такі параметри:
- За файлом JUnit jar слідує крапка з комою.
- Шлях до каталогу, в якому існує вихідний файл.
- Ім'я файлу класу
У наведеному вище синтаксисі що означає точка (.)?
Ми згадали крапку на місці всього шляху до каталогу.
З крапки випливає, що:
- Шлях до класу вже включає поточний каталог вихідних файлів Java.
- JVM (віртуальна машина Java) автоматично припускає, що в поточному каталозі розміщуються вихідні файли.
- Потім JVM шукає там згадане ім’я файлу JUnit. Ім'я файлу - останній параметр, заданий у команді компіляції.
Ви можете перевірити параметри, що переходять у -cp, за допомогою наступних кроків:
- Відкрийте командний рядок.
- Введіть javac і натисніть ENTER.
- Відображаються всі відповідні параметри, включаючи -cp. Ви побачите, що параметр -cp йде як параметр, де шлях - це шлях до файлів класу, який JVM шукає.
Знімок екрана нижче:
Як скомпілювати кілька файлів одночасно?
Кілька тестових файлів JUnit можна скомпілювати відразу, відокремлюючи імена файлів пробілами.
Нижче наведено приклад того, де ви компілюєте файли Java JUnitProgram і demoTest:
javac -cp junit-4.0.0.jar;. JUnitProgram.java demoTest.java
# 5.2) Як запустити тест JUnit з командного рядка?
Подібно до того, як javac, так само використовується компілятор Java java -cp використовується для запуску файлів класу Java, включаючи класи JUnit.
Нижче наведено синтаксис, якого ви могли б дотримуватися:
java -cp junit-4.0.0.jar;. JUnitProgram demoTest
Ця команда виконує файли JUnitProgram.java і demoTest.java один за одним.
# 5.3) Додаткова інформація про 'виконання командного рядка'.
Запитання та відповіді на співбесіду з технічною підтримкою
Ось додаткова інформація про Як виправити помилку за допомогою команди javac - і навіщо використовувати параметр запуску командного рядка
# 5.3.1) Як виправити невизнану помилку команди для команди javac?
Більшість з нас стикаються з цією проблемою, намагаючись виконати явак команда через командний рядок. Це траплялося і зі мною; тож ми подумали написати його тут.
до) Ми вступили в команду явак і натиснув Введіть у командному рядку.
б) Повідомлення про помилку - javac не розпізнається як внутрішня чи зовнішня команда, операційна програма чи командний файл показано нижче:
Тут починається компіляція файлів класу Java із командного рядка. Отже, помилка справді викликає занепокоєння і не може бути проігнорована.
Для того, щоб виправити проблему, виконайте наведені нижче дії та Ось!!! ви бачите, що помилка зникла:
- Демонструємо цей процес, використовуючи базовий файл Java. Першим кроком, який ви могли б зробити, є створення базового класу Java Наприклад : “Калькулятор.java”
- Ми знайдемо Calculate.java з Провідника Windows і скопіюємо шлях.
- Змініть каталог у командному рядку на шлях, який ви скопіювали (шлях до вихідного файлу). Використовуйте cd, щоб змінити каталог.
- Тепер встановіть PATH у папку jdk bin за допомогою команди.
SET PATH = та натисніть ENTER.
- Тут шлях jdk - C: Program Files Java jdk1.8.0_181 bin. Отже, ми відповідно встановили шлях. Результат нічого не показує при натисканні ENTER після команди.
- Тепер перевірте, чи JVM розпізнає команду явак ввівши команду javac та натиснувши ENTER.
-
- Якщо команда розпізнає, то набір дійсних параметрів для javac відображається як результат.
- В іншому випадку помилка знову з’явиться.
Нижче наведено знімок екрана, який показує, що ми успішно позбулися помилки.
Не будемо намагатися уникнути важливого питання тут:
Чому JVM розпізнав команду javac після встановлення шляху до папки bd jdk?
Ми впевнені, що це питання у вас теж буде на думці. Дана нижче - відповідь.
- У папці jdk bin є всі бібліотеки для команди javac. Отже, ось чому, коли ви встановлюєте шлях відповідно, JVM тепер може розпізнавати команду javac без будь-яких проблем.
- Див папка javac під контейнером jdk на зображенні нижче.
- Тоді ви можете запустити команду «Java compile and run» за допомогою командного рядка. Крім того, також пам’ятайте, щоб правильно встановити змінну CLASSPATH. Змінні JAVA_HOME та JUNIT_HOME для файлів Java та JUnit, відповідно.
# 5.3.2) Перевага запуску тестів за допомогою командного рядка:
Давайте швидко обговоримо перевагу перед запуском тестів Java / JUnit через командний рядок.
Як ви вже знаєте, не існує жорсткого правила щодо виконання файлів класу через командний рядок. Це лише альтернативний спосіб, яким можна керувати компіляцією та виконанням файлів класів.
Якщо ви запитаєте, чи є особлива перевага у володінні ноу-хау щодо виконання тестів JUnit за допомогою командного рядка, тоді ми сказали б «Звичайно, так».
Причина 'так' наведена нижче:
- Всі ці серії кроків, які ми виконували вище; може бути доданий у блокнот і перетворений у пакетний файл.
- Тепер, коли ви запускаєте цей пакетний файл подвійним клацанням, це може спричинити компіляцію та виконання декількох тестових файлів JUnit, названих у пакетному файлі.
У чому перевага використання командного файлу для компіляції та виконання файлів Java?
- Пакетний файл / файл jar може діяти як зручна утиліта, яка може дозволити будь-кому, хто не знає про внутрішню логіку коду, і дуже легко виконати кілька тестових випадків.
- Це може усунути необхідність наявності спеціалізованого розробника або контролю якості для виконання цих завдань виконання тесту. Завдання виконання можна делегувати будь-якому ресурсу, не турбуючись про обмеження навичок.
У наступному альтернативному варіанті ми побачимо ще один вигідний і похвальний спосіб виконання наших тестових кейсів JUnit.
# 6) Запустіть Test Suite, використовуючи Testrunner Class
У сценаріях реального часу виконання по одному тестовому сценарію є найменш бажаним варіантом.
- У нас є випадки, коли нам потрібно запустити групу пов’язаних / не пов’язаних тестових випадків.
- Наприклад, нам може знадобитися створити та виконати набори тестів регресії або набори тестів диму.
Зараз ми дізнаємося про реалізацію різних анотацій, що використовуються для створення тестових наборів та запуску набору.
Загальний процес виконання набору тестів за допомогою Test Runner відбувається згідно з наведеним нижче робочим процесом:
- Створіть JUnit клас 1, JUnit клас 2,…. Клас JUnit n.
- Створіть файл класу класу Test Suite, групуючи тести.
- Створіть файл класу Testrunner, щоб викликати створений набір тестів.
- Виконайте клас Testrunner.
Структура програм, за допомогою яких ми демонструватимемо створення тестового набору та виконання файлу runner, показана на зображенні нижче:
Тут ми розглянемо підтеми:
- Створення JUnit класів
- Створення тестових наборів
- Створення файлу Testrunner та запуск тестових наборів за його допомогою.
- Додаткова інформація про роботу анотації @RunWith.
# 6.1) Створення JUnit класів
Почнемо із створення двох простих файлів класу JUnit:
- JUnitTestCase1.java - Він включає код для перевірки очікуваного числового значення - змінної Значення1 відповідає фактичному значенню змінної Значення2.
- JUnitTestCase2.java - Включає код для перевірки, чи очікувана змінна рядка strValue і фактична рядкова змінна strАктуально сірники.
Це в основному два тестові кейси, які ми спробуємо потрапити в логічну групу, що називається test suite, і змусити її запускатись один за одним.
Код для JUnitTestCase1.java
package demo.tests; import static org.junit.Assert.*; import java.util.*; import java.lang.String; import static org.testng.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import junit.framework.Assert; public class JUnitTestCase1 { public int Value1=6000; @Test public void junitMethod1(){ int Value2=9000; Assert.assertEquals(Value1, Value2); } }
Код для JUnitTestCase2.java
package demo.tests; import static org.junit.Assert.*; import java.util.*; import java.lang.String; import static org.testng.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import junit.framework.Assert; public class JUnitTestCase2 { public String stringValue='JUnit'; @Test public void junitMethod2(){ String strActual='Junit1'; Assert.assertSame(stringValue, strActual); } }
# 6.2) Створення тестового набору:
Цей і наступний розділи відіграють помітну роль у всьому процесі створення та запуску набору тестів. У цьому розділі ми спробуємо розібратися як згрупувати кілька тестових класів JUnit та зв’язати їх у набір тестів .
Відповідно до структурного зображення вище, давайте створимо тестовий набір, що об’єднує JUnitTestCase1.java та JUnitTestCase2.java та називаємо набір як JUnitTestSuite.java
Дві анотації, які допомагають нам досягти створення набору тестів:
- @RunWith та
- @SuiteClasses
Пакети, необхідні для анотацій:
- Вам потрібно буде імпортувати пакет org.junit.runner.RunWith; для включення анотації @RunWith.
- Вам знадобиться пакет org.junit.runners.Suite.SuiteClasses, щоб @SuiteClasses працював.
- Крім того, вам також потрібно буде імпортувати пакет org.junit.runners.Suite для передачі параметра Suite.class в анотацію @RunWith.
Давайте розглянемо код для кращого розуміння !!
Код для JUnitTestSuite.java
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({JUnitTestCase1.class, JUnitTestCase2.class }) public class JUnitTestSuite { @BeforeClass public static void printMe() { System.out.println('JUnitTestSuite is the test suite grouping testcase 1 and testcase 2'); } }
Розуміння коду для JUnitTestSuite.java:
- @RunWith допомагає JVM зрозуміти, який клас бігунів повинен працювати Наприклад Люкс. Клас або Огірок. Клас
- Тут параметр @RunWith є Люкс. Клас . Це допомагає JVM визнати, що поточний файл, де використовується @RunWith (Suite.class), відіграє роль у Test Suite.
- Імена тестових класів JUnit, які мають бути зв’язані між собою в наборі, повинні передаватися як масив рядків у вигляді параметрів для @SuiteClasses, кожен розділений комою.
- Це дозволяє JVM знати, які саме тестові кейси потрібно згрупувати під набір.
- Іменем набору буде ім'я файлу класу JUnit, яке анотовано @RunWith та @SuiteClasses, що в цьому випадку є JUnitTestSuite.
# 6.3) Створіть файл Test Runner і запустіть набір JUnit Test за допомогою Test Runner
Останній крок допоможе нам запустити тестовий пакет, який ми щойно створили у наведеному вище розділі, використовуючи файл Testrunner.
- Тепер ми створимо файл Java із назвою SuiteRunnerFile.
- Цей SuiteRunnerFile.java є не класом JUnit, а звичайним файлом Java з основним методом у ньому.
Давайте подивимось на код, а потім спробуємо зрозуміти його.
Код для SuiteRunnerFile.java
package demo.tests; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class SuiteRunnerFile { public static void main(String args()) { Result result=JUnitCore.runClasses(JUnitTestSuite.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } } }
Пакети, необхідні для анотації
- Вам потрібно імпортувати пакет org.junit.runner.JunitCore, щоб включити JUnitCore клас у коді.
- Вам потрібно імпортувати пакет org.junit.runner.notification.Failure та org.junit.runner. Результат - включити в код код Failure та Result відповідно.
Розуміння коду для SuiteRunnerFile.java
- Для того, щоб створити файл запуску для виконання набору тестів, файл JUnitCore клас відіграє значну роль.
- runClasses () метод JUnitCore class приймає назву класу тестового набору як вхідний параметр, отже, ми маємо твердження JUnitCore. runClasses (JUnitTestSuite. клас ).
- Тип повернення цього твердження - Результат об'єкт класу, що зберігає результуючий стан успішності та статус відмови кожного з файлу тестового випадку; після виконання. Ось чому у нас є результат як Результат об'єкт класу в коді.
- Потім ми друкуємо помилки тестових випадків, якщо такі є. Як і метод getFailures (), ви також можете отримати кількість відмов та кількість запусків за допомогою методів getFailureCount () та getRunCount (), відповідно.
- Тепер SuiteRunnerFile готовий до виконання,
- Виберіть файл з Провідника пакетів і
- Клацніть правою кнопкою миші та виберіть Запустити як -> Java, програма виконується.
Нижче наведено знімок вікна консолі.
Пояснення результатів на консолі:
Консоль вище показує, що:
- Файл класу JUnitTestSuite виконано через SuiteRunnerFile.
- Спочатку виконується метод printMe () під анотацією @BeforeClass та
- Потім тестові кейси в наборі тестів виконувались один за одним. Ось як набір тестів можна створити та запустити як пакет.
# 6.4) Додаткова інформація - Як працює @RunWith?
- @RunWith - це API JUnit, який в основному приймає лише один елемент як вхідний параметр, що є ім'ям файлу класу бігуна.
- Фреймворк JUnit викликає вказаний клас як пробний біг.
Наведений нижче фрагмент із RunWith.java допоможе вам зрозуміти:
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Inherited public @interface RunWith { Class Extends Runner> value(); }
Розуміння наведеного вище коду інтерфейсу RunWith:
- Вказаний значення елемент повинен бути похідним класом Бігун клас . Тут використано поняття рефлексії.
- Дуже хороший приклад такого класу бігунів вже реалізований у нашому коді, тобто @RunWith (Suite.class), де група тестових випадків пов'язана між собою, щоб створити набір тестів.
- Подібним чином, ще одним хорошим прикладом використання класу Runner з @RunWith може бути @RunWith (Cucumber.class), що є структурою, що керується бізнесом (BDD) для автоматизації тестів із використанням Selenium в Java. Це допомагає фреймворку запускати тестові кейси на основі огірка.
Примітка:
- Анотації та параметри, використані для створення та запуску тестового набору JUnit у цьому посібнику, були специфічними для JUnit 4.
- Існує дещо інший спосіб створення JUnit Test Suite та запуску файлу запуску в JUnit 5.
Незабаром ми будемо цілеспрямовано розуміти всі аспекти JUnit 4 проти JUnit 5 у наших майбутніх підручниках.
# 7) Запустіть тестові кейси JUnit за допомогою Maven
Ви також можете мати проект Maven, що складається з тестів JUnit, і запустити тести через Maven, про що буде розказано в окремому посібнику.
Висновок
- Ми вивчили всі різні варіанти запуску тестів JUnit - окремі тести, а також кілька, згруповані в тестові набори.
- Ми отримали додаткові знання про те, як оновити налаштування для параметра Виконати, як виправити помилку javac та як може допомогти нам виконання командного рядка.
- Крім того, ми також дізналися про те, як працює анотація @RunWith.
Отже, у наступних навчальних посібниках є ще що слідувати. ‘Чекай до цього часу !!!
=> Завітайте сюди, щоб навчитися JUnit з нуля.
Рекомендована література
- Тести JUnit: Як написати приклади тестів JUnit на прикладах
- Підручник з JUnit для початківців - що таке тестування JUnit
- Що таке пристрій для тестування JUnit: Підручник із прикладами JUnit 4
- Specflow Reporting: Як створити звіти про тести та виконати вибіркові тести
- Завантажте, встановіть і налаштуйте JUnit в Eclipse
- Вступ до JUnit Framework та його використання у сценарії селену - Підручник з селену No11
- Створіть тести Appium для програми для Android
- Вставте кілька документів у MongoDB за допомогою масивів