I'm running a short research devoted to synthesize various techniques, framework and practices in automated testing including Unit testing. Why am I doing that? Don't know, and I'm not going to explain my intentions as can't find certain ones myself. Some frameworks presented in this blog appear as just highlight, some provide detailed overview.
TestNG is the next one in a series of Unit testing FW overviews. Here are a documentation http://testng.org/doc/documentation-main.html#testng-xml and JavaDoc http://testng.org/javadocs/index.html
As not a real user of that framework, in fact I can't run and report in-depth analysis. IMO the core axis and feature of TestNG is wide use of annotations. The whole list of annotations and attributes in TestNG is here. The set of @BeforeXXX and @AfterXXX annotations serve as inherited implementation of setup() / teardown() in xUnit. testing.xml specifies how test suites are built, how execution flow is supposed to be and like sequencing, shuffling.
Authors took care about compatibility with Junit Reporter XML schema, though they claim that their own reporter contains more specific information so that TestNG's native reporting schema is slightly different. But compatibility with jUnit reporter looks weak as developer should care about reporting himself using org.testing.Reporter
Advanced things like annotations customization, parallelism, listeners, interceptors are available at abovementioned referenced API and documentation.
- MS's Framework overview
- Google's Framework overview