Documentation available at TestNG's main web site. Visit TestNG Documentation's GitHub Repo to contribute to it.
Release Notes
Need help?
Before opening a new issue, did you ask your question on
If you posted on both sites, please provide the link to the other question to avoid duplicating the answer.
Are you sure it is a TestNG bug?
Before posting the issue, try to reproduce the issue in a shell window.
If the problem does not exist with the shell, first check if the issue exists on the bugtracker of the runner, and open an issue there first:
Which version are you using?
Always make sure your issue is happening on the latest TestNG version. Bug reports occurring on older versions will not be looked at quickly.
Have you considered sending a pull request instead of filing an issue?
The best way to report a bug is to provide the TestNG team with a full test case reproducing the issue.
Maybe you can write a runnable test case (check the src/test/
folder for examples) and propose it in a pull request
Don't worry if the CI fails because it is the expected behavior.
This pull request will be a perfect start to find the fix :)
How to create a pull request?
Refer our Contributing section for detailed set of steps.
We encourage pull requests that:
- Add new features to TestNG (or)
- Fix bugs in TestNG
If your pull request involves fixing SonarQube issues then we would suggest that you please discuss this with the
TestNG-dev before you spend time working on it.
GPG Keys
Getting the keys
Download the keys as shown below:
gpg --keyserver keyserver.ubuntu.com --recv-keys 0F13D5631D6AF36D
gpg: key 0F13D5631D6AF36D: "Krishnan Mahadevan (krmahadevan-key) <krishnan.mahadevan1978@gmail.com>" not changed
gpg: Total number processed: 1
gpg: unchanged: 1
Trusting the keys
Trust the keys as shown below:
gpg --edit-key 0F13D5631D6AF36D
gpg (GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Secret key is available.
sec rsa2048/0F13D5631D6AF36D
created: 2016-12-01 expires: never usage: SC
trust: full validity: unknown
ssb rsa2048/7295B61CC8DD9AE8
created: 2016-12-01 expires: never usage: E
[ unknown] (1). Krishnan Mahadevan (krmahadevan-key) <krishnan.mahadevan1978@gmail.com>
gpg> trust
sec rsa2048/0F13D5631D6AF36D
created: 2016-12-01 expires: never usage: SC
trust: full validity: unknown
ssb rsa2048/7295B61CC8DD9AE8
created: 2016-12-01 expires: never usage: E
[ unknown] (1). Krishnan Mahadevan (krmahadevan-key) <krishnan.mahadevan1978@gmail.com>
Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)
1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu
Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y
sec rsa2048/0F13D5631D6AF36D
created: 2016-12-01 expires: never usage: SC
trust: ultimate validity: unknown
ssb rsa2048/7295B61CC8DD9AE8
created: 2016-12-01 expires: never usage: E
[ unknown] (1). Krishnan Mahadevan (krmahadevan-key) <krishnan.mahadevan1978@gmail.com>
Please note that the shown key validity is not necessarily correct
unless you restart the program.
gpg> exit
Invalid command (try "help")
gpg> quit
Verifying the signature
- Download the
.asc
file from https://repo1.maven.org/maven2/org/testng/testng/<versionGoesHere>
- Run the command
gpg --verify testng-<versionGoesHere>.jar.asc testng-<versionGoesHere>.jar
- You should see an output as below:
gpg: Signature made Tue Dec 26 15:06:16 2023 IST
gpg: using RSA key 0F13D5631D6AF36D
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Good signature from "Krishnan Mahadevan (krmahadevan-key) <krishnan.mahadevan1978@gmail.com>" [ultimate]
For more details regarding keys please refer: