Package org.apache.batik.test
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
Base class containing convenience methods for writing tests.
There are at least three approaches to write new tests derived from
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 aTestReport
. In that case, you can use the convenience methods such asreportFailure
reportSuccess
orreportException
to help build aTestReport
, and use theTestReport
'saddDescriptionEntry
to populate the report with relevant error description. - You can choose to use the various assertion methods such as
assertNull
,assertEquals
orassertTrue
. These methods throw exceptions which will be turned inTestReports
by theAbstractTest
.
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 Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
assertEquals
(int ref, int cmp) void
assertEquals
(Object ref, Object cmp) Convenience method to check for a specific condition.void
assertNull
(Object ref) Convenience method to check that a reference is nullvoid
assertTrue
(boolean b) Convenience method to check that a given boolean is true.void
Convenience method to report an error condition.getId()
Return thisTest
's id.getName()
Returns thisTest
's name.Returns thisTest
's parent, in case thisTest
is part of aTestSuite
.Return thisTest
's qualified id.reportError
(String errorCode) Convenience method to report a simple error code.reportException
(String errorCode, Exception e) Convenience method to help implementations report errors.Convenience method.run()
This default implementation of the run method catches any Exception thrown from the runImpl method and creates aTestReport
indicating an internalTest
failure when that happens.runImpl()
Subclasses should implement this method with the content of the test case.boolean
In the simplest test implementation, developers can simply implement the following method.void
Set thisTest
's id.void
Sets this test's namevoid
Set thisTest
's parent.
-
Field Details
-
id
This test's id. -
parent
This test's parent, in case this test is part of a suite. -
name
This test's name. If null, the class' name is returned. -
report
TestReport
-
-
Constructor Details
-
AbstractTest
public AbstractTest()
-
-
Method Details
-
getName
Returns thisTest
's name. -
setName
Sets this test's name -
getId
Return thisTest
's id. -
getQualifiedId
Return thisTest
's qualified id.- Specified by:
getQualifiedId
in interfaceTest
-
setId
Set thisTest
's id. Null is not allowed. -
getParent
Description copied from interface:Test
Returns thisTest
's parent, in case thisTest
is part of aTestSuite
. The returned value may be null. -
setParent
Description copied from interface:Test
Set thisTest
's parent. -
run
This default implementation of the run method catches any Exception thrown from the runImpl method and creates aTestReport
indicating an internalTest
failure when that happens. Otherwise, this method simply returns theTestReport
generated by therunImpl
method. -
runImpl
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
In the simplest test implementation, developers can simply implement the following method.- Throws:
Exception
-
reportSuccess
Convenience method. -
reportError
Convenience method to report a simple error code. -
error
Convenience method to report an error condition.- Throws:
TestErrorConditionException
-
assertNull
Convenience method to check that a reference is null- Throws:
AssertNullException
-
assertTrue
Convenience method to check that a given boolean is true.- Throws:
AssertTrueException
-
assertEquals
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
- Throws:
AssertEqualsException
-
reportException
Convenience method to help implementations report errors. AnAbstractTest
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 calledMessages
having the same package name as theTest
class, appended with ".resources
".
-