[
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)