Class AbstractTest

java.lang.Object
org.apache.batik.test.AbstractTest
All Implemented Interfaces:
Test
Direct Known Subclasses:
AbstractRenderingAccuracyTest, DefaultTestSuite, DummyValidTest, ImageCompareTest, ParametrizedTest, PerformanceTest, PerformanceTestValidator, SelfContainedSVGOnLoadTest, SelfContainedSVGOnLoadTestValidator.DefaultErrorTest, SelfContainedSVGOnLoadTestValidator.ReportSuccess, SVGOnLoadExceptionTest, SVGRenderingAccuracyTestValidator.DefaultConfigTest, TestReportValidator, XMLTestSuiteRunnerValidator.XMLTestSuiteRunnerTest

public abstract class AbstractTest extends Object implements Test
Base class containing convenience methods for writing tests.
There are at least three approaches to write new tests derived from AbstractTest:
  • You can simply override the runImplBasic method and return true or false depending on whether or not the test fails.
  • You can choose to report more complex test failure conditions by overriding the runImpl method which returns a TestReport. In that case, you can use the convenience methods such as reportFailure reportSuccess or reportException to help build a TestReport, and use the TestReport's addDescriptionEntry to populate the report with relevant error description.
  • You can choose to use the various assertion methods such as assertNull, assertEquals or assertTrue. These methods throw exceptions which will be turned in TestReports by the AbstractTest.
Here are some examples: public class MyTestA extends AbstractTest { public boolean runImplBasic() { if(someConditionFails){ return false; } return true; } } public class MyTestB extends AbstractTest { public TestReport runImpl() { if(someConditionFails){ TestReport report = reportError(MY_ERROR_CODE); report.addDescriptionEntry(ENTRY_KEY_MY_ERROR_DESCRIPTION_KEY, myErrorDescriptionValue); return report; } return reportSuccess(); } public class MyTestC extends AbstractTest { public TestReport runImpl() throws Exception { assertTrue(somCondition); assertEquals(valueA, valueB); assertNull(shouldBeNullRef); if(someErrorCondition){ error(MY_ERROR_CODE); } return reportSuccess(); }
Version:
$Id: AbstractTest.java 1805408 2017-08-18 12:21:52Z ssteiner $
  • Field Details

    • id

      protected String id
      This test's id.
    • parent

      protected TestSuite parent
      This test's parent, in case this test is part of a suite.
    • name

      protected String name
      This test's name. If null, the class' name is returned.
    • report

      private DefaultTestReport report
      TestReport
  • Constructor Details

    • AbstractTest

      public AbstractTest()
  • Method Details

    • getName

      public String getName()
      Returns this Test's name.
      Specified by:
      getName in interface Test
    • setName

      public void setName(String name)
      Sets this test's name
    • getId

      public String getId()
      Return this Test's id.
      Specified by:
      getId in interface Test
    • getQualifiedId

      public String getQualifiedId()
      Return this Test's qualified id.
      Specified by:
      getQualifiedId in interface Test
    • setId

      public void setId(String id)
      Set this Test's id. Null is not allowed.
      Specified by:
      setId in interface Test
    • getParent

      public TestSuite getParent()
      Description copied from interface: Test
      Returns this Test's parent, in case this Test is part of a TestSuite. The returned value may be null.
      Specified by:
      getParent in interface Test
    • setParent

      public void setParent(TestSuite parent)
      Description copied from interface: Test
      Set this Test's parent.
      Specified by:
      setParent in interface Test
    • run

      public TestReport run()
      This default implementation of the run method catches any Exception thrown from the runImpl method and creates a TestReport indicating an internal Test failure when that happens. Otherwise, this method simply returns the TestReport generated by the runImpl method.
      Specified by:
      run in interface Test
    • runImpl

      public TestReport runImpl() throws Exception
      Subclasses should implement this method with the content of the test case. Typically, implementations will choose to catch and process all exceptions and error conditions they are looking for in the code they exercise but will let exceptions due to their own processing propagate.
      Throws:
      Exception
    • runImplBasic

      public boolean runImplBasic() throws Exception
      In the simplest test implementation, developers can simply implement the following method.
      Throws:
      Exception
    • reportSuccess

      public TestReport reportSuccess()
      Convenience method.
    • reportError

      public TestReport reportError(String errorCode)
      Convenience method to report a simple error code.
    • error

      public void error(String errorCode) throws TestErrorConditionException
      Convenience method to report an error condition.
      Throws:
      TestErrorConditionException
    • assertNull

      public void assertNull(Object ref) throws AssertNullException
      Convenience method to check that a reference is null
      Throws:
      AssertNullException
    • assertTrue

      public void assertTrue(boolean b) throws AssertTrueException
      Convenience method to check that a given boolean is true.
      Throws:
      AssertTrueException
    • assertEquals

      public void assertEquals(Object ref, Object cmp) throws AssertEqualsException
      Convenience method to check for a specific condition. Returns true if both objects are null or if ref is not null and ref.equals(cmp) is true.
      Throws:
      AssertEqualsException
    • assertEquals

      public void assertEquals(int ref, int cmp) throws AssertEqualsException
      Throws:
      AssertEqualsException
    • reportException

      public TestReport reportException(String errorCode, Exception e)
      Convenience method to help implementations report errors. An AbstractTest extension will typically catch exceptions for specific error conditions it wants to point out. For example: public TestReport runImpl() throws Exception {
      try{
      .... something ....
      catch(MySpecialException e){
      return reportException(MY_SPECIAL_ERROR_CODE, e);
      }

      public static final String MY_SPECIAL_ERROR_CODE = "myNonQualifiedClassName.my.error.code"


      Note that the implementor will also need to add an entry in its Messages.properties file. That file is expected to be in a resource file called Messages having the same package name as the Test class, appended with ".resources".