使用PowerMockito模拟接口



我需要在HBase API中模拟一种方法。请找到下面的方法

 public static Connection createConnection() throws IOException {
    return createConnection(HBaseConfiguration.create(), null, null);
 }

请在以下链接中找到连接接口的源代码

http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hbase.hbase/hbase-clase/hbase-client/1.1.1.1/org/apache/hadoop/hadoop/hadoop/hbase/hbase/hbase/client/client/connection.java p>我尝试过以下

Connection mockconnection = PowerMockito.mock(Connection.class);
PowerMockito.when(ConnectionFactory.createConnection()).thenReturn(mockconnection);

是这种正确的模拟形式,因为它无法正常工作

要模拟static方法,您需要:

  1. 在类或方法级别添加@PrepareForTest

示例:

@PrepareForTest(Static.class) // Static.class contains static methods
  1. Call PowerMockito.mockStatic(class)嘲笑静态类(使用PowerMockito.spy(class)模拟特定方法):

示例:

PowerMockito.mockStatic(Static.class);
  1. 只使用Mockito.when()来设置您的期望:

示例:

Mockito.when(Static.firstStaticMethod(param)).thenReturn(value);

因此,在您的情况下,就是这样:

@RunWith(PowerMockRunner.class)
public class ConnectionFactoryTest {
    @Test
    @PrepareForTest(ConnectionFactory.class)
    public void testConnection() throws IOException {
        Connection mockconnection = PowerMockito.mock(Connection.class);
        PowerMockito.mockStatic(ConnectionFactory.class);
        PowerMockito.when(ConnectionFactory.createConnection()).thenReturn(mockconnection);
        // Do something here
    }
}

有关的更多详细信息>如何模拟静态方法

相关内容

  • 没有找到相关文章

最新更新