| How to create regression tests for JavaBeans | |
| ============================================ | |
| All regression tests are developed to run under JavaTest 3.2.2. | |
| TEST HIERARCHY | |
| -------------- | |
| You should choose an appropriate folder from the following list: | |
| - The Beans folder contains tests for the java.beans.Beans class | |
| - The EventHandler folder contains tests for the java.beans.EventHandler class | |
| - The Introspector folder contains tests for introspection | |
| - The PropertyChangeSupport folder contains tests for the bound properties | |
| - The VetoableChangeSupport folder contains tests for the constrained properties | |
| - The PropertyEditor folder contains tests for all property editors | |
| - The Statement folder contains tests for statements and expressions | |
| - The XMLDecoder folder contains tests for XMLDecoder | |
| - The XMLEncoder folder contains tests for XMLEncoder | |
| - The Performance folder contains manual tests for performance | |
| - The beancontext folder contains tests for classes | |
| from the java.beans.beancontext package | |
| NAME CONVENTIONS FOR TEST CLASSES | |
| --------------------------------- | |
| Usually a class name should start with the "Test" word | |
| followed by 7-digit CR number. For example: | |
| Beans/Test4067824.java | |
| If your test contains additional files you should create | |
| a subfolder with the CR number as its name. For example: | |
| Introspector/4168475/Test4168475.java | |
| Introspector/4168475/infos/ComponentBeanInfo.java | |
| If you have several tests for the same CR number you should also | |
| create a subfolder with the CR number as its name. For example: | |
| XMLEncoder/4741757/AbstractTest.java | |
| XMLEncoder/4741757/TestFieldAccess.java | |
| XMLEncoder/4741757/TestSecurityManager.java | |
| XMLEncoder/4741757/TestStackOverflow.java | |
| Every JAR file should contain source files for all class files. For example: | |
| XMLDecoder/4676532/test.jar#test/Test.class | |
| XMLDecoder/4676532/test.jar#test/Test.java | |
| USEFUL UTILITY CLASSES | |
| ---------------------- | |
| For Introspector tests you can use the BeanUtils class. | |
| This class provides helpful methods to get | |
| property descriptors for the specified type. | |
| For XMLEncoder tests you can use the AbstractTest class. | |
| This class is intended to simplify tests creating. | |
| It contains methods to encode an object to XML, | |
| decode XML and validate the result. | |
| The validate() method is applied to compare | |
| the object before encoding with the object after decoding. | |
| If the test fails the Error is thrown. | |
| 1) The getObject() method should be implemented | |
| to return the object to test. | |
| This object will be encoded and decoded | |
| and the object creation will be tested. | |
| 2) The getAnotherObject() method can be overridden | |
| to return a different object to test. | |
| If this object is not null it will be encoded and decoded. | |
| Also the object updating will be tested in this case. | |
| The test() method has a boolean parameter, | |
| which indicates that the test should be started in secure context. |