如何在类上设置期望,以便进行涉及嵌套调用的单元测试



我正在使用robolelectric测试一个类。这是我的用例:

有3个类A, B和C。有一个库,我可以像这样从C调用:

<Lib-class>.getInstance().doSomething(Object param);

C类定义为:

public class C {
  public void xyz(Object data) {
     <Lib-class>.getInstance().doSomething(data);
  }
}

我正在测试类A。类A的测试有一个方法叫做

@Test
public void testDo() {
  C c = new C();
  String x = "abc";
  c.xyz(x);
}

我想验证两件事:

    库类的doSomething()方法被调用
  • doSomething()方法使用与我传递的相同的参数被调用(测试流)

我不能使用Mockito来模拟库类,因为它是final的。

我编写了代码来影子库类,但是影子方法的实现只有在我从A的测试类调用.getInstance().doSomething(x)时才会被调用,而不是在从A -> C -> LibraryClass

调用它时。

我怎么能确保调用c.xyz(x)会导致我的影子类被调用??

我使用@Config(shadows = {ShadowLibClass.class})进行测试。我使用自定义测试运行器。基本的影子逻辑是有效的。

影子为嵌套调用工作,但不知道为什么不看着你。您是否覆盖了插装设置类定义并在createSetup方法中返回它,并将您的影子类添加为"应该插装"?

存在多个doSomething方法与不同的方法参数?

相关内容

  • 没有找到相关文章

最新更新