This tutorial Explains How to Use The Maven Surefire Plugin to Manage our Dependencies and Select & Execute Particular Test Scripts or Suites Using TestNG:
Here is a perfect guide for you on the Integration of Maven and TestNG using the Maven Surefire plugin and how to execute the script using this plugin.
Let’s Move On!!
What You Will Learn:
What Is Maven Surefire Plugin?
- The Surefire plugin is designed to execute the unit tests of an application and can generate the reports using HTML format.
- We can integrate Surefire plugins with the other testing frameworks such as TestNG, Junit, and POJO Tests, etc.
- It also supports other languages like C#, Ruby, Scala, etc.
Let’s refresh/better understand the most basic terminologies used in this tutorial.
#1) Maven: It is a build automation tool that is primarily used for java projects. It dynamically downloads Java libraries and Maven plugins from Maven Central repository which is called Dependency Management.
#2) Maven Central Repository: It is a place where all the project jars, libraries, and plugins are stored and it can be accessed by Maven easily.
#3) POM (Project Object Model): It is an XML file that contains information about the project and configuration details used by maven to build the project.
#4) TestNG: It is an open-source testing framework that helps us to run before/after tests, by grouping the tests using annotations and can generate reports. It also supports Data-driven testing, Parallel execution, and Parametrization. It is easier to use.
These are the basic terminologies of Maven and TestNG. Now, let’s see the purpose of the Surefire plugin and the integration procedure.
Why We Need Maven With TestNG Integration?
- Whenever we are executing test scripts or suites using the Maven project, our dependencies are managed in the POM.xml file. However, a specific test suite cannot be selected to execute from a list of available suites.
- In TestNG, we cannot manage our dependencies but we can select and execute particular test scripts or suites.
- Given that Maven and TestNG have different capabilities, we are integrating both using the Maven Surefire plugin.
Work Flow Using The Maven Surefire Plugin
- Here, execution starts from the Maven project using POM.xml. Initially, it connects to the Maven Online Repository and downloads the latest version of the dependencies.
- As TestNG has the capability to select and execute particular test scripts or suites, we are integrating this with Maven using the Maven Surefire plugin.
Configuration Of Maven Surefire Plugin
Step 1: Select the POM.xml file from the Maven project. Right-click and select Maven => Add Plugin
Step 2: Add the Plugin window will be displayed.
To enter the Plugin details:
- Go to Google and Type Maven Surefire plugin.
- Click the link, maven.apache.org/surefire/maven-surefire-plugin and Select ‘Using TestNg’ link on the left pane of the window.
- Select the XML code that is displayed under the ‘Using Suite XML Files’ header.
- Enter the Group Id, Artifact Id and Version details in the Add Plugin Window using the below XML code snippet and click Ok.
<Plugins> <plugin> <groupId>org.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20</version> <configuration> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> </plugins>
Step 3: On clicking the OK button, the Plugin is added in POM.xml file.
Step 4: Copy the <Configuration> xml code snippet and add it to below the <version>tag.
Step 5: Finally, the POM.xml code configuration looks as shown below.
<build> <plugins> <Plugin> <groupId>org.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20</version> <configuration> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> </plugins> </build>
Executing Test Suite Using Maven Surefire Plugin
Step 1: Select any script(LoginLogoutTest), Right-click and Select TestNG-> Test. Here we are trying to run the Batch execution using TestNG.
Step 2: XML file will be generated in the Temp folder. Rename the file as fullRegressionsuite.xml (Renaming it for our convenience).
Step 3: Create a class name for each script and add under the <classes> tag.
Step 4: In the POM.xml file, name the fullRegressionsuite.xml in the <suiteXmlFile> tag.
- It is the test suite that contains an XML file of the TestNG that is to be triggered by Maven.
- We can have any number of test suites in the <suiteXmlFile> tag. So that the Scripts we have in each suite will be executed.
Step 5: Right-click on POM.xml => Run => Maven test.
Step 6: Regression Test Suite is successfully executed and we can see the output in the Console window.
Step 7: Refresh the entire project and the test suite Report can be seen in the target folder of the Project Explorer window.
Step 8: Execution report showing all the information about the test suite is displayed.
Maven Surefire plugin helps us to manage our dependencies and select & execute particular test scripts or suites using TestNG.
Thus, in this tutorial, we have achieved the Integration of Maven with TestNg.