TestNG is a testing framework based on JUnit and NUnit to simplify a broad range of testing needs, from Unit Testing to Integration Testing. And the functionality which makes it efficient testing framework are
Support for annotations
Support for data-driven testing
Flexible test configuration
Ability to re-execute failed test cases