繁体   English   中英

在使用Mockito的单元测试中忽略父类的方法

[英]Ignore parent class' method in unit testing with mockito

我尝试尝试以下课程:

public class ClassA extends ClassB {
  ...
  public String methodToBeTested(){
    methodA1();
    methodB();
    return something;
  }
  ...
}

methodB是父类的方法。 我想忽略此方法或仅将其存根。 我越来越尝试以下方法:

public class TestClassA{
  @Mock
  ClassB instanceB;

  public String testTheMethodToBeTested{
    doNothing().when(instanceB).methodB();
    ClassA instanceA = new ClassA();
    String result = instanceA.methodToBeTested();
    String expected = "foo"
    assertTrue(result.equals(expected));
  }
  ...
}

但是我看到methodB仍在执行。 但是在ClassA如果我声明一个classB变量及其设置器; 我的测试代替了methodB()编写classB.methodB() 但要求我不要更改正在测试的代码。 有什么方法可以测试ClassA吗?

您可以使用@Spyhttp://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#13 )。

public class TestClassA{

  @Rule
  public MockitoRule rule = MockitoJUnit.rule();

  @Spy
  ClassA instanceA;

  public String testTheMethodToBeTested{
    doNothing().when(instanceA).methodB();
    String result = instanceA.methodToBeTested();
    String expected = "foo"
    assertTrue(result.equals(expected));
  }
  ...
}

由于继承的原因,您没有实例化ClassB的实例,但是Mockito允许您监视真实的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM