类的非静态方法

问题描述

我试图用存根编写测试,但是模拟其中一种方法并没有按预期进行。

class A {
 public static getInstance(){
  return new A();
 }
 public String getConn(){
 return "Hello";
 }
}

class B {
 public String createConn(){
  A instance  = A.getInstance();
  return instance.getConn();
 }
}

我的测试班:

@RunWith(powermockrunner.class)  
@PrepareForTest(A.class) 
public class TestClassB{  

  @Spy 
  B classB = new B();  

  @Test 
  public void testConn(){  

      powermockito.mockStatic(A.class);  
      given(A.getConn()).thenReturn("Welcome");  
      assertEquals("Welcome",classB.createConn()); 
  }

我想在类B的createConn方法上创建一个测试,当我获得连接时,我想使用Mockito接收“欢迎”而不是“ Hello”吗?

解决方法

我找到了解决问题的方法。

  PowerMockito.mockStatic(A.class);
  PropertyManager mock = PowerMockito.mock(A.class);
  given(A.getInstance()).willReturn(mock);
  given(mock.getConn()).willReturn("Welcome");
  assertEquals("Welcome",classB.createConn());