[ 
https://issues.apache.org/jira/browse/HBASE-5456?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13214029#comment-13214029
 ] 

Todd Lipcon commented on HBASE-5456:
------------------------------------

I tend to agree with Mikhail. The presence of a protected method named 
"getRegionServerServicesForTests" or something lets me know, when I'm working 
on the code, that this method is used, and I can easily use eclipse to tell me 
which unit tests use it. PowerMock and other tools which use strings to refer 
to functions aren't going to play nice with that, so it's easy to be unaware of 
test dependencies.

I think these tools are best used sparingly and only to mock out system 
dependencies (like "new FileInputStream()", "InetSocketAddress.getHostName()", 
or "System.currentTimeMillis()")
                
> Introduce PowerMock into our unit tests to reduce unnecessary method exposure
> -----------------------------------------------------------------------------
>
>                 Key: HBASE-5456
>                 URL: https://issues.apache.org/jira/browse/HBASE-5456
>             Project: HBase
>          Issue Type: Task
>            Reporter: Zhihong Yu
>
> We should introduce PowerMock into our unit tests so that we don't have to 
> expose methods intended to be used by unit tests.
> Here was Benoit's reply to a user of asynchbase about testability:
> OpenTSDB has unit tests that are mocking out HBaseClient just fine
> [1].  You can mock out pretty much anything on the JVM: final,
> private, JDK stuff, etc.  All you need is the right tools.  I've been
> very happy with PowerMock.  It supports Mockito and EasyMock.
> I've never been keen on mutilating public interfaces for the sake of
> testing.  With tools like PowerMock, we can keep the public APIs tidy
> while mocking and overriding anything, even in the most private guts
> of the classes.
>  [1] 
> https://github.com/stumbleupon/opentsdb/blob/master/src/uid/TestUniqueId.java#L66

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to