DEV Community

Arvind Choudhary
Arvind Choudhary

Posted on

4 4

TestNG testing framework - Introduction

TestNG logo


What is a Testing Framework?

A testing framework is a set of guidelines or rules used for creating and designing test cases. A framework is comprised of a combination of practices and tools that are designed to help QA professionals test more efficiently.


Popular available options:

  1. JUnit
  2. NUnit
  3. TestNG

Why TestNG?

TestNG is a testing framework inspired by JUnit and NUnit but introduces some new functionalities that make it more powerful and easier to use, such as:

  • Annotations.
  • Run your tests in arbitrarily big thread pools with various policies available (all methods in their thread, one thread per test class, etc…).
  • Test that your code is multithread safe.
  • Flexible test configuration.
  • Support for data-driven testing (with @DataProvider).
  • Support for parameters.
  • Powerful execution model (no more TestSuite).
  • Supported by a variety of tools and plug-ins (Eclipse, IDEA, Maven, etc…).
  • Embeds BeanShell for further flexibility.
  • Default JDK functions for runtime and logging (no dependencies).
  • Dependent methods for application server testing. TestNG is designed to cover all categories of tests: unit, functional, end-to-end, integration, etc…

Annotations in TestNG

Annotations


Assertions

Assertions in TestNG are a way to verify that the expected result and the actual result match or not.

  • Expected Result: expected outcome at a point in time while testing application.
  • Actual Result: actual outcome at a point in time while testing application.

example:

Assert.assertEquals(actualOutcome,expectedOutcome);
Enter fullscreen mode Exit fullscreen mode

Types Of Assertions

Hard Assertion: Hard Asserts are those asserts that stop the test execution when an assert statement fails, and the subsequent assert statements are therefore not validated.
Soft Assertions: In soft asserts, the subsequent assertions keep on running even though one assert validation fails, i.e., the test execution does not stop.

Example:

# Hard Assert
Assert.assertEquals(actualResult,expectedResult);
# Soft Assert
SoftAssert softassert = new SoftAssert();
softassert.assertEquals(actualResult, expecetedResult);
softassert.assertAll();
Enter fullscreen mode Exit fullscreen mode

Example Usage

pom.xml

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.5</version>
</dependency>
Enter fullscreen mode Exit fullscreen mode

code

only @test annotated methods are called test should hold test scripts, whereas @BeforeMethod/@AfterMethod methods should be used for setting up prerequisites & cleaning up for each tests.

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class Runner {
    @BeforeTest
    public void beforeTest(){
        System.out.println("method to be executed before test");
    }

    @Test
    public void test(){
        System.out.println("test method");
    }

    @AfterTest
    public void afterTest(){
        System.out.println("method to be executed after test");
    }
}

Enter fullscreen mode Exit fullscreen mode

output:

method to be executed before test
test method
method to be executed after test
===============================================
Default Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================
Enter fullscreen mode Exit fullscreen mode

Few useful URLs:

TestNG webpage
Javatpoint tutorial

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Retry later