Testng в java

Тестування за допомогою TestNG в Java

Хочу вас познайомити ще з одним інструментом для тестування, в цій невеликій статті ми розглянемо основні можливості TestNG.

TestNG - це фреймворк для тестування, написаний Java, він взяв багато чого з JUnit і NUnit, але він не тільки успадкував від існуючої функціональності Junit, а також впровадження нових інноваційних функцій, які роблять його потужним, простим у використанні.

TestNG призначений для:

• інтеграційного тестування і т.д.

Які можливості в TestNG?

1) Annotations. (Анотація);

2) Використання XML для гнучкого конфігурування тестів;

3) Підтримка data-driven тестування (за допомогою анотації @DataProvider);

4) Зовсім методи для тестування серверних додатків;

5) Підтримується в Eclipse, IDEA, Ant, Maven, Netbean, Hudson;

6) Тестування вашого коду проходить багатопоточн, що дає безпеку і швидкодія;

7) Легкий перехід від JUnit.

Давайте напишемо перший наш тест використовуючи TestNG.

Для цього я буду використовувати середовище розробки Intellij IDEA 12.

Створюємо Maven проект і додаємо залежності:

Після цього створимо клас Calc.java і тестовий клас CalcTest.java для нього.

Testng в java

Вміст класу Calc.java:

Вміст класу CalcTest.java:

7-й рядок - це екземпляр класу який ми будемо тестувати.

9-й рядок - ця інструкція говорть про те що даний метод є тестовим і може запускатися в окремому потоці.

Крок 2. Перший тест

Давайте напишемо тест на метод в класі Calc.java:

У нас є клас в якому є метод знаходив суму двох чисел, для нього ми написали тест де перевірили що сума числа 2 і 3 повинна дорівнювати 5-ти.

За допомогою класу Assert бібліотеки TestNG ми перевіряємо на правильність роботи методу.

Крок 3. Запуск тестів

Тепер запускаємо написаний тест.

Testng в java

Після виконання тесту ви побачите наступний результат:

Ми бачимо, що тест вдало пройшов!

Після вдалого проходження тестів формується спеціальний xml файл, з його допомогою ми можемо проганяти тести повторно використовуючи консоль cmd.

Файл знаходиться по цьому шляху: C: \ Users \\ .IntelliJIdea12 \ system \ temp-testng-customsuite.xml. у мене він з наступним змістом:

Запустити тести можна через консоль використовуючи файл temp-testng-customsuite.xml. для цього увійдіть в cmd і введіть команду:

Увага!
Тестовий клас в нашому випадку ClacTest.java. повинен бути скомпільовано.

Крок 4. Анотації TestNG

TestNG є більш гнучкий завдяки своїм анотацій. Що вони нам надають?

Значить існує 10 керованих анотацій TestNG:

1. @BeforeSuite - вказує, що даний метод, буде запускатися перед будь-яким методом тестового класу.

2. @BeforeGroups - анотується методи, які будуть виконуватися перед першим методом в кожній із зазначених груп.

3. @BeforeClass - вказує, що метод буде виконаний після запуску тестового класу, але перед усіма тестовими методами.

4. @BeforeTest - анотований метод буде запускатися після всіх уже запущених тестових методів.

5. @AfterTest - анотований метод буде запущений до будь-якого тестового методу, що належать класам всередині тега .

6. @BeforeMethod - анотований метод буде виконуватися перед кожним тестовим методом.

7. @AfterMethod - анотований метод буде запускатися після кожного тестового методу.

8. @AfterClass - анотований метод буде запущений після всіх тестових методів в поточному класі.

9. @AfterGroups - анотується методи, які будуть виконуватися після всіх методом в будь-якому із зазначених груп.

10. @AfterSuite - вказує, що даний метод, буде запускатися після всіх методом тестового класу.

Ось що у нас повинно вийти:

І ось результат:

Testng в java

Крок 5. Винятки

Відловити очікувану помилку можна за допомогою анотації @Test через параметр expectedExceptions:

де expectedExceptions - очікуване виняток (помилка).

У цьому випадку тест пройде успішно так як ми очікуємо, що даний тест викине нам NullPointerException.

Крок 6. Ігнорування тестових методів

Іноді потрібно проігнорувати тестовий метод, якщо вам наприклад в черговому тестуванні не потрібно виконувати цей тестований метод.

Для того щоб проігнорувати тестовий метод вам достатньо вказати в анотації @Test параметрі enabled = false.

Крок 7. Timeout

Якщо вам буде потрібно обмежити час проведення тесту для певного тестового методу, то вам на допомогу приходить параметр timeOut анотації @Test.

в даному випадком тестовий метод буде завалений, так як ліміт часу для його виконання перевищує заданий.

У 6-му рядку ми змушуємо потік заснути на 1001 мілісекунду.

Крок 8. Групове тестування

Якщо вам потрібно прогнати тести групами, наприклад, щоб тестові методи виконувалися по черзі групами.

Для цього ми можемо використовувати атрибут groups в анотації @Test.

Наступний приклад має 4 тестових методу, кожен з них входить в групу інтеграції, методи testingMethod1. testingMethod3testingFMethod4 входять в групу Unit1. testingMethod2 входить в групу unit2.

Після того як ми написали тести і розділили їх по групах давайте навчимося їх запускати.

Для цього натискаємо правою кнопкою миші по назві тестового класу:

Testng в java

Після в вікні, що з'явилося робимо наступні дії пізнані цифрами:

Testng в java

Після цього тиснемо Run і в результаті виконання ви побачите що виконався тільки 2 тестових метод, які відносяться до групи unit2:

Testng в java

Крок 9. Зовсім тести

Припустимо є тестовий клас в якому є 2 тестових методу, де один залежить від іншого, тобто перший не пройде успішно поки не відпрацює другий. Давайте розглянемо як це зробити.

Зробити це можна за допомогою параметра dependsOnMethods анотації @Test:

Як бачите тестовий метод testmethod () залежить від тестового методу initEnvironmentTest () і буде виконаний тільки після того як відпрацює initEnvironmentTest () метод.

Testng в java

Також залежність можна встановити на групу тестів:

Спочатку виконається група тестів а потім залежні від це групи тести.

p.s. Дякую за увагу, якщо урок сподобався, то підписуйтесь на оновлення нижче.

Правила передруку сайта www.DevColibri.com

Шановний відвідувач проекту!

Вам дозволяється вільно використовувати в своїх цілях будь-який документ при дотриманні наступних умов:

• В кінці передруковувати документа Ви зобов'язані вставити посилання на сайт www.devcolibri.com.

З повагою, Адміністратор!
[email protected]

Схожі статті