Java 类的模拟非静态方法

Java 类的模拟非静态方法,java,mocking,mockito,powermock,Java,Mocking,Mockito,Powermock,我试图编写一个带有存根的测试,但是模拟其中一个方法并没有像预期的那样发生 class A { public static getInstance(){ return new A(); } public String getConn(){ return "Hello"; } } class B { public String createConn(){ A instance = A.getInstance(); return instance.get

我试图编写一个带有存根的测试,但是模拟其中一个方法并没有像预期的那样发生

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接收“Welcome”?

我找到了问题的解决方案

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

你能告诉我们你试过什么吗?
@RunWith(PowerMockRunner.class)@PrepareForTest(A.class)公共类TestClassB{@Spy B classB=new B();@Test public void testConn(){}PowerMockito.mockStatic(A.class);give(A.getConn())。然后返回(“欢迎”);assertEquals(“欢迎”,classB.createConn();}