[ https://issues.apache.org/jira/browse/POOL-400?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Phil Steitz closed POOL-400. ---------------------------- Resolution: Fixed I do not see the need to bring in a new dependency for this case. > Refactor TestGenericObjectPoolFactoryCreateFailure to improve test design > ------------------------------------------------------------------------- > > Key: POOL-400 > URL: https://issues.apache.org/jira/browse/POOL-400 > Project: Commons Pool > Issue Type: Improvement > Reporter: Xiao Wang > Priority: Minor > > h3. Description > I noticed that there is a test class > [SingleObjectFactory|https://github.com/apache/commons-pool/blob/dbb4ca0bc969464f31435867a0800fc766f31068/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolFactoryCreateFailure.java#L38] > extends production class > [BasePooledObjectFactory|https://github.com/apache/commons-pool/blob/dbb4ca0bc969464f31435867a0800fc766f31068/src/main/java/org/apache/commons/pool2/BasePooledObjectFactory.java#L33] > to assist testing method > [GenericObjectPool.borrowObject()|https://github.com/apache/commons-pool/blob/dbb4ca0bc969464f31435867a0800fc766f31068/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java#L222]. > This might not be the best priactice in unit testing and can be improved by > leveraging mocking frameworks. > h3. Current Implementation > * {{SingleObjectFactory}} extends {{BasePooledObjectFactory}} and creates a > new variable to keep tracking of the method invocation status for > {{created()}}. > * In test case, the new variable will be used to check the execution status > and wait {{created()}} to be excuted. > h3. Proposed Implementation > * Replace {{SingleObjectFactory}} with a mocking object created by Mockito. > * Extract the AtomicBoolean attribute and use the extracted attribute in > test case to check method invocation status. > * Use method stub to control the behavior of the mocking object. > h3. Motivation > * Decouple test class {{SingleObjectFactory}} from production interface > {{BasePooledObjectFactory}}. > * Make test logic more clear by using method stub instead of method > overriding. -- This message was sent by Atlassian Jira (v8.20.10#820010)