A symphony of TestNG and JUnit

TestNG’s flexible fixtures, parametric testing, and hip grouping facilities make higher level testing a breeze, yet, sometimes I find myself still writing basic unit tests with JUnit (old habits never die, I suppose). But, as I’ve stated before, there’s nothing wrong with using the two smokin’ frameworks in concert– in fact, many code bases already have an extensive collection of JUnit tests; consequently, TestNG can run JUnit tests.

Using TestNG’s testng.xml suite file, you can specify a collection of JUnit tests by creating a new test entry and setting the junit attribute to true. For example, the following suite file runs a series of TestNG tests as well as all the JUnit tests found in the test.com.acme.pdp and test.com.acme.pdp.gsap packages.

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd">
<suite name="all unit tests suite">
<test name="all unit tests">
 <groups>
  <run>
   <include name="unit"/>
  </run>
 </groups>
 <packages>
  <package name="test.com.acme.pdp.ng"/>
 </packages>
</test>  

<test name="junits" junit="true">
 <packages>
  <package name="test.com.acme.pdp"/>
  <package name="test.com.acme.pdp.gsap"/>
 </packages>
</test>
</suite>

As you can see, this suite file defines a group of TestNG tests that focus on unit tests and another group of JUnit tests found in two different packages.

TestNG isn’t an all-or-nothing choice when it comes to using a testing framework. If you already have an existing suite of copasetic JUnit tests, you can still run them via an Ant task; however, running them via TestNG provides one single report for test results.

Related odds and ends
 

2 Responses to “A symphony of TestNG and JUnit”

  1. on 05 Oct 2006 at 3:38 am The Disco Blog » TestNG is so Groovy

    [...] As I wrote about previously, TestNG can execute an existing suite of JUnit tests, thus providing a unified reporting mechanism for all developer tests. This means that TestNG can also execute developer test written in Groovy. [...]


  2. [...] The tool is heavily focused on JUnit style testing; however, moreUnit works for TestNG as well. As I’ve already advocated, TestNG and JUnit play nicely together, so it shouldn’t be a surprise to see moreUnit complement TestNG. [...]

Trackback this Post | Feed on comments to this Post

Leave a Reply