Групповое тестирование — это новая инновационная функция в TestNG, которой нет в среде JUnit. Это позволяет вам распределять методы по частям и выполнять сложные группировки методов тестирования.
Вы можете не только объявить те методы, которые принадлежат группам, но вы также можете указать группы, которые содержат другие группы. Затем можно вызвать TestNG и попросить включить определенный набор групп (или регулярные выражения), исключая при этом другой набор.
Групповые тесты обеспечивают максимальную гибкость в том, как вы разбиваете свои тесты, и не требуют от вас перекомпиляции чего-либо, если вы хотите запустить два разных набора тестов вплотную.
Группы указываются в файле testng.xml с помощью тега <groups>. Его можно найти в теге <test> или <suite>. Группы, указанные в теге <suite>, применяются ко всем тегам <test> ниже.
Теперь давайте рассмотрим пример того, как работает групповое тестирование.
Создать класс
-
Создайте Java-класс для тестирования, скажем, MessageUtil.java в C: \> TestNG_WORKSPACE .
Создайте Java-класс для тестирования, скажем, MessageUtil.java в C: \> TestNG_WORKSPACE .
/* * This class prints the given message on console. */ public class MessageUtil { private String message; // Constructor // @param message to be printed public MessageUtil(String message) { this.message = message; } // prints the message public String printMessage() { System.out.println(message); return message; } // add "tutorialspoint" to the message public String salutationMessage() { message = "tutorialspoint" + message; System.out.println(message); return message; } // add "www." to the message public String exitMessage() { message = "www." + message; System.out.println(message); return message; } }
Создать тестовый класс
-
Создайте тестовый класс Java, скажем, GroupTestExample.java.
-
Добавьте тестовые методы testPrintMessage () и testSalutationMessage () в ваш тестовый класс.
-
Сгруппируйте метод испытаний по двум категориям —
-
Проверка тестов (checkintest) — эти тесты должны быть запущены перед отправкой нового кода. Как правило, они должны быть быстрыми и просто убедиться, что основные функции не нарушены.
-
Функциональные тесты (functest). Эти тесты должны охватывать все функциональные возможности вашего программного обеспечения и выполняться не реже одного раза в день, хотя в идеале вы хотели бы запускать их непрерывно.
-
Создайте тестовый класс Java, скажем, GroupTestExample.java.
Добавьте тестовые методы testPrintMessage () и testSalutationMessage () в ваш тестовый класс.
Сгруппируйте метод испытаний по двум категориям —
Проверка тестов (checkintest) — эти тесты должны быть запущены перед отправкой нового кода. Как правило, они должны быть быстрыми и просто убедиться, что основные функции не нарушены.
Функциональные тесты (functest). Эти тесты должны охватывать все функциональные возможности вашего программного обеспечения и выполняться не реже одного раза в день, хотя в идеале вы хотели бы запускать их непрерывно.
Создайте файл класса Java с именем GroupTestExample.java в C: \> TestNG_WORKSPACE .
import org.testng.Assert; import org.testng.annotations.Test; public class GroupTestExample { String message = ".com"; MessageUtil messageUtil = new MessageUtil(message); @Test(groups = { "functest", "checkintest" }) public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); message = ".com"; Assert.assertEquals(message, messageUtil.printMessage()); } @Test(groups = { "checkintest" }) public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "tutorialspoint" + ".com"; Assert.assertEquals(message, messageUtil.salutationMessage()); } @Test(groups = { "functest" }) public void testingExitMessage() { System.out.println("Inside testExitMessage()"); message = "www." + "tutorialspoint"+".com"; Assert.assertEquals(message, messageUtil.exitMessage()); } }
Создать testng.xml
Создайте testng.xml в C: \> TestNG_WORKSPACE , чтобы выполнить тестовые наборы . Здесь мы будем выполнять только те тесты, которые относятся к группе functest .
<?xml version = "1.0" encoding = "UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name = "Suite1"> <test name = "test1"> <groups> <run> <include name = "functest" /> </run> </groups> <classes> <class name = "GroupTestExample" /> </classes> </test> </suite>
Скомпилируйте классы MessageUtil, Test case, используя javac.
C:\TestNG_WORKSPACE>javac MessageUtil.java GroupTestExample.java
Теперь запустите testng.xml, который запустит только метод testPrintMessage (), так как он принадлежит группе functest .
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
Проверьте вывод. Только метод testPrintMessage () выполняется.
Inside testPrintMessage() .com Inside testExitMessage() www..com =============================================== Suite1 Total tests run: 2, Failures: 1, Skips: 0 ===============================================
Группа групп
Группы могут также включать другие группы. Эти группы называются метагруппами . Например, вы можете определить группу, включающую checkintest и functest . Давайте изменим наш файл testng.xml следующим образом:
<?xml version = "1.0" encoding = "UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name = "Suite1"> <test name = "test1"> <groups> <define name = "all"> <include name = "functest"/> <include name = "checkintest"/> </define> <run> <include name = "all"/> </run> </groups> <classes> <class name = "GroupTestExample" /> </classes> </test> </suite>
Выполнение вышеупомянутого testng.xml выполнит все три теста и даст вам следующий результат —
Inside testPrintMessage() .com Inside testSalutationMessage() tutorialspoint.com Inside testExitMessage() www.tutorialspoint.com =============================================== Suite1 Total tests run: 3, Failures: 0, Skips: 0 ===============================================
Группы исключения
Вы можете игнорировать группу, используя тег <exclude>, как показано ниже —