Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 315119

Summary: To change several test framework classes to eliminate dynamic test case names
Product: z_Archived Reporter: Edwin Tang <edwin.tang>
Component: EclipselinkAssignee: Edwin Tang <edwin.tang>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 Keywords: test
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
patch file
none
patch file
none
patch file none

Description Edwin Tang CLA 2010-05-31 13:20:44 EDT
The following test framework classes have a constructor that use originalObject to build test name. 
org.eclipse.persistence.testing.framework.ReadObjectTest
org.eclipse.persistence.testing.framework.WriteObjectTest
org.eclipse.persistence.testing.framework.UnitOfWorkBasicUpdateObjectTest
org.eclipse.persistence.testing.framework.DeleteObjectTest

For example, in org.eclipse.persistence.testing.framework.ReadObjectTest, the code is like:

    public ReadObjectTest(Object originalObject) {
        setOriginalObject(originalObject);
        setName("ReadObjectTest(" + originalObject + ")");
        setDescription("The test reads the intended object, '" + originalObject + "', from the database and checks if it was read properly");
    }

Depending on how the toString() method is implemented in a domain class, some test names contain hash code value for the object, others contain id attribute for the object. So the test case names are dynamic, i.e., different from run to run. The dynamic test case names cause reporting issues.
Comment 1 Edwin Tang CLA 2010-05-31 14:39:59 EDT
Created attachment 170579 [details]
patch file
Comment 2 Edwin Tang CLA 2010-05-31 14:48:40 EDT
Changed the line for setting test name in org.eclipse.persistence.testing.framework.ReadObjectTest
from:
        setName("ReadObjectTest(" + originalObject + ")");
to:
        setName("ReadObjectTest(" + originalObject.getClass() + ")");

Similar change is made in the following classes:
org.eclipse.persistence.testing.framework.WriteObjectTest
org.eclipse.persistence.testing.framework.InsertObjectTest
org.eclipse.persistence.testing.framework.UnitOfWorkBasicInsertObjectTest
org.eclipse.persistence.testing.framework.UnitOfWorkBasicUpdateObjectTest
org.eclipse.persistence.testing.framework.DeleteObjectTest
org.eclipse.persistence.testing.tests.types.WriteTypeObjectTest
Comment 3 Edwin Tang CLA 2010-06-01 11:16:15 EDT
Created attachment 170642 [details]
patch file

Added a null check in org.eclipse.persistence.testing.framework.ReadObjectTest like:
        if (originalObject == null) {
            setName("ReadObjectTest(null)");
        }
        else {
            setName("ReadObjectTest(" + originalObject.getClass() + ")");
        }
Comment 4 Edwin Tang CLA 2010-06-01 13:25:53 EDT
Created attachment 170666 [details]
patch file

Similar changes in following classes as well:
org.eclipse.persistence.testing.tests.aggregate.DescriptorRefreshCacheTest
org.eclipse.persistence.testing.tests.writing.UpdateDeepOwnershipTest
org.eclipse.persistence.testing.tests.queries.inmemory.CacheHitTest
org.eclipse.persistence.testing.tests.optimisticlocking.OptimisticLockingInsertTest
Comment 5 Edwin Tang CLA 2010-06-01 13:33:07 EDT
Checked the patch into 2.1.0

Tested with Core LRG

Code reviewed by: James Sutherland
Comment 6 Eclipse Webmaster CLA 2022-06-09 10:03:11 EDT
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink