TestNG is a popular testing framework for Java applications, providing powerful features for automated testing. One of its key features is the ability to create test suites, which allow for the execution of multiple tests in a specific order. In this tutorial, we will explore the concept of test suites in TestNG and provide an example of how to create and run a suite.

What is a Test Suite?

A test suite is a collection of test cases that are intended to test a specific behavior or set of behaviors of a software program. It is essentially a group of related tests that are executed together. This allows for more efficient testing, as multiple tests can be run at once without the need for manual intervention.

In TestNG, a test suite is represented by an XML file, which contains the configuration for the tests to be run. This separation of suite configuration from the actual test code allows for more flexibility, as changes to the suite can be made without affecting the code base.

Creating a Test Suite in TestNG

To create a test suite in TestNG, we first need to create an XML file with the .xml extension. This file will contain the configuration for our suite, including the tests to be run and any parameters or dependencies.

Defining a Suite

The first step in creating a test suite is to define it using the <suite> tag. This tag has two attributes: name and verbose. The name attribute is used to give a name to the suite, while the verbose attribute specifies the level of logging to be displayed during the execution of the suite.

For example, we can define a suite named “Suite1” with a verbose level of 1 as follows:

<suite name="Suite1" verbose="1">

    ...

</suite>

Adding Tests to the Suite

Once we have defined our suite, we can add tests to it using the <test> tag. This tag also has a name attribute, which is used to give a name to the test.

Within the <test> tag, we can specify the classes that contain the actual test code using the <classes> tag. Each class should be specified using the <class> tag with the name attribute set to the fully qualified name of the class.

For example, if we have two test classes named “tutorialSimpleTest1” and “ParameterSample”, we can add them to our suite as follows:

<test name="SimpleTest1">

    <classes>

        <class name="tutorialSimpleTest1"/>

    </classes>

</test>

<test name="SimpleTest2">

    <classes>

        <class name="ParameterSample"/>

    </classes>

</test>

Running the Suite

To run our test suite, we can use the TestNG command line tool with the -suitename option. For example, if our suite is named “Suite1”, we can run it using the following command:

java org.testng.TestNG -suitename Suite1

This will execute all the tests in the suite in the order they are defined in the XML file.

Man writing code on laptop

Example Suite – Suite1

To better understand how to create and run a test suite in TestNG, let’s take a look at an example suite – Suite1. This suite contains two tests: SimpleTest1 and SimpleTest2, each with their own set of test cases.

The complete XML configuration for this suite is as follows:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Suite1" verbose="1">

    <test name="SimpleTest1">

        <classes>

            <class name="tutorialSimpleTest1"/>

        </classes>

    </test>

    <test name="SimpleTest2">

        <classes>

            <class name="ParameterSample"/>

            <class name="ParameterTest"/>

        </classes>

    </test>

</suite>

Let’s break down this configuration and understand what each part does.

Defining the Suite

The first line of our XML file is the DOCTYPE declaration, which specifies the type of document we are creating. In this case, it is a TestNG suite.

Next, we have the <suite> tag with the name and verbose attributes set to “Suite1” and 1 respectively.

Adding Tests to the Suite

Within the <suite> tag, we have two <test> tags – one for SimpleTest1 and one for SimpleTest2. Each test has its own set of classes specified using the <classes> tag.

For SimpleTest1, we have only one class – tutorialSimpleTest1. This class contains the test cases for SimpleTest1.

For SimpleTest2, we have two classes – ParameterSample and ParameterTest. These classes contain the test cases for SimpleTest2, with ParameterTest being dependent on ParameterSample.

Running the Suite

To run this suite, we can use the TestNG command line tool as mentioned earlier. The output of running this suite would look something like this:

Suite 1

Total tests run: 4, Failures: 0, Skips: 0

This indicates that all four test cases in the suite were executed successfully.

Conclusion

In this tutorial, we have explored the concept of test suites in TestNG and provided an example of how to create and run a suite. We have seen how test suites can make automated testing more efficient, flexible, and organized. With this knowledge, you can now start creating your own test suites in TestNG and improve your testing process.