Comparison to JUnit
Disadvantages of JTiger
JTiger requires a Java 2 Runtime Environment that is a version 1.5 or higher in order to execute unit test cases. JUnit can test cases can be executed on any Java 2 Runtime Environment.
JTiger has less community acceptance. JUnit has been the de facto standard unit test framework for Java applications. JUnit is known to be a reliable and useful test framework. JTiger asserts that it is just as reliable, if not more, and is more useful, but cannot prove it as easily.
JTiger has less support from third party applications. Many projects, which are distinct to JUnit itself, provide extensions and additional functionality to JUnit. A vast majority of these extensions provide support for the JUnit test case, which JTiger is capable of executing, and IDE plugins, which is a short-term goal for JTiger development. JTiger can be used in most IDEs by executing the main method with command line arguments through the IDE. JTiger IDE plugins will aim to achieve the same mode of execution, but with a better graphical interface to specifying test execution parameters.
Advantages of JTiger
JTiger test case metadata is specified as Java language annotations, rather than being embedded in method names or Javadoc. This results in compile-time enforcement of test case metadata and runtime retention of test case documentation. As an example of compile-time enforcement, consider the JUnit test case "setUp" method, which, if spelt incorrectly, is silently ignored and may result in incorrect test execution results that are overlooked. If you mispell the JTiger @SetUp annotation, the compiler will give you an error message.
JTiger includes feature-rich assertion abilities. The business logic for many common operations are included in the JTiger assertions package. JUnit requires you to write the business logic then "assert true" on that logic against the code that is under test. The JUnit test case result may be incorrect on the basis that either; both the assertion and the code under test are defective, giving a false success result, or the assertion is defective, falsely indicating that the code under test is defective. JTiger aims to make the authoring of unit test cases as simple and robust and possible.
JTiger includes a public API, framework and software design that has been well thought out. The design of JUnit suffers from seemingly ad hoc decisions that have been made late in the design, or during implementation. This makes enhancements difficult to achieve without introducing bugs. JTiger includes detailed self-test source that ensures that future enhancements to JTiger will have 100% compliance with the initial stated requirements.
JTiger includes an Apache Ant task that is included with the JTiger download package. The same author who makes updates to JTiger also makes updates to the JTiger Apache Ant task.
JTiger includes test case execution reporting with HTML, XML or plain text result handlers. This functionality is outside the scope of JUnit.
JTiger has been written using the same software development methodologies that it encourages. JTiger endorses the approach of "program to an interface, not an implementation" and aims to encapsulate functionality so that only the bare minimum is exposed to the user (as public APIs) and is exposed in a logical layout. JTiger development follows the Test Driven Development approach. JUnit apparently follows no such approach.
JTiger proposes future enhancements, such as more assertion abilities, IDE plugins, mock objects package and anything that the community presents as useful for JTiger. JUnit enhancement appears to have become idle.