【问题标题】:Mock non static method of a class模拟类的非静态方法
【发布时间】:2020-09-18 09:58:40
【问题描述】:

我正在尝试使用存根编写测试,但模拟其中一种方法没有按预期发生。

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”?

【问题讨论】:

  • 你能告诉我们你尝试了什么吗?
  • @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()); }

标签: java mocking mockito powermock


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    相关资源
    最近更新 更多