Java для автоматизаторов
  • Introduction
  • Java. Введение
    • Java как язык и платформа
    • Установка и настройка
  • Язык Java. Основы
    • Hello World
    • Переменные
    • Типы данных
    • Строки
    • Циклы "while" / "do ... while"
    • Циклы "for"
    • Условный оператор "if / if ... else"
    • Условный оператор "switch"
    • Массивы
    • Задания к главе
  • ООП в Java
    • Классы и объекты
    • Методы
    • Свойства
    • Параметры методов
    • Ключевое слово this
    • Конструктор
    • Модификаторы static и final
    • StringBuffer
    • Метод toString()
    • Метод equals()
    • Наследование
    • Пакеты
    • Интерфейсы
    • Модификаторы Public, Private и Protected
    • Полиморфизм
    • Инкапсуляция
    • Использование обобщений
    • Generics and Wildcards
    • Анонимные классы
    • Исключения
    • Множественные исключения
    • Абстрактные классы
    • Вложенные классы
    • Тип Enum
    • Задания к главе
  • Коллекции
    • ArrayList
    • Linked Lists
    • HashMap
    • Sets (Множества)
    • Sorted Maps
    • Задание порядка в множестве ( natural ordering )
    • Очередь (Queue)
    • Использование итераторов
    • Создание объектов, реализующих интерфейс Iterable
    • Задания к главе
  • Стиль написания кода
    • Структура файла
    • Файлы-исходники
    • Открывающие комментарии
    • Сведения о пакете и импорте
    • Объявление классов и интерфейсов
    • Длина строки
    • Переносы строк
    • Переносы в объявлении методов
    • Переносы в операторе if
    • Переносы в тернарных операциях
    • Виды комментариев
    • Блочные комментарии
    • Однострочные комментарии
    • Комментарии в конце строки
    • Объявления (Декларации)
    • Операторы
    • Пропуски
    • Конвенция именования
    • Задания к главе
  • Работа с файлами
    • Работа с текстовыми файлами
    • Работа с XML файлами
    • Работа с JSON файлами
    • Property-файлы
    • Задания к главе
  • Log4j - система логирования сообщений в Java
    • Начало работы
    • Конфигурационные файлы
    • Стандартные аппендеры
    • Задания к главе
  • Юнит тестирование
    • JUnit vs TestNG. Основные аннотации
    • JUnit vs TestNG. Примеры тестов
      • Exception тесты
      • Ignore тесты
      • Тест с таймаутом
      • Тест сьюты
      • Параметризованные тесты
      • Зависимые тесты
      • Многопоточность
    • Asserts
    • Использование "заглушек" (Mocks)
  • Build инструменты
    • Build инструменты
    • Примеры конфигураций
  • Системы контроля версий. Git
    • Системы контроля версий. Git
    • Git. Установка
    • Git. Основы
    • Git. Основные команды
      • Настройка
      • Работа с репозиторием
      • Работа с удаленным сервером
      • Работа с ветками
Powered by GitBook
On this page
  1. Юнит тестирование
  2. JUnit vs TestNG. Примеры тестов

Тест сьюты

Тест сьют - это связка тест кейсов в один набор. Эта фича реализована и в JUnit 4 и в TestNG, но сделано это по-разному.

JUnit 4

“@RunWith” и “@Suite” аннотации используются для запуска тест сьюта. Класс, написанный ниже, означает, что классы “JunitTest1” и “JunitTest2” будут запущены после запуска JunitTest5. Все остальные декларации будут внутри класса.

@RunWith(Suite.class)
@Suite.SuiteClasses({
        JunitTest1.class,
        JunitTest2.class
})
public class JunitTest5 {
}

TestNG

XML файл используется для запуска тест сьюта. Файл, приведенный ниже, означает, что классы “TestNGTest1” и “TestNGTest2” будут запущены вместе.

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
  <test name="testing">
    <classes>
       <class name="com.fsecure.demo.testng.TestNGTest1" />
       <class name="com.fsecure.demo.testng.TestNGTest2" />
    </classes>
  </test>
</suite>

TestNG может не только группировать тесты по классам, но и по методам (тестам). С помощью аннотации "groups" любой тест может быть занесен в одну или более группы. А затем можно будет запустить ту или иную группу тестов (одну или несколько). Таким образом, можно, например, группировать тесты по фичам.

Вот пример класса с 4 методами и 3 группами(method1, method2 and method3)

    @Test(groups="method1")
    public void testingMethod1() {  
        System.out.println("Method - testingMethod1()");
    }  

    @Test(groups="method2")
    public void testingMethod2() {  
        System.out.println("Method - testingMethod2()");
    }  

    @Test(groups="method1")
    public void testingMethod1_1() {  
        System.out.println("Method - testingMethod1_1()");
    }  

    @Test(groups="method4")
    public void testingMethod4() {  
        System.out.println("Method - testingMethod4()");
    }

Используя следующий файл конфигурации, мы можем запустить только тесты из группы “method1”.

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
  <test name="testing">
      <groups>
      <run>
        <include name="method1"/>
      </run>
    </groups>
    <classes>
       <class name="com.fsecure.demo.testng.TestNGTest5_2_0" />
    </classes>
  </test>
</suite>

К концепцией групп возможности для интеграционного тестирования безграничны. К примеру, можно запускать тесты, относящиеся к базе данных, добавив их в группу “DatabaseFuntion” (название случайное).

Задание 1. Напишите тест, принадлежащий одновременно нескольким группам.

Задание 2. Напишите файл конфигурации для запуска нескольких групп,

PreviousТест с таймаутомNextПараметризованные тесты

Last updated 6 years ago