Robolectric ShadowPath

时间:2014-11-26 20:10:12

标签: android robolectric

我正在尝试使用ShadowPath来测试渲染器是否会产生我期望的点,但是我必须错过一些尝试让它运行的东西。

public void test() {
  ShadowPath shadowPath = Robolectric.shadowOf(new Path());
  drawToPath(shadowPath);
  List<Point> points = path.getPoints();
  ...assertPoints...
}

public void drawToPath(Path path) {
  path.moveTo(x, y);
  path.drawTo(x1, y1);
  ...
}

显然我不能将shadowPath传递给drawToPath(),因为它不是子类Path,但它如何拦截moveTo和drawTo方法。

我错过了什么? 感谢

1 个答案:

答案 0 :(得分:0)

答案是神奇的,不要传递阴影。

Robolectric.shadoOf(instance)将回调注入原始路径实例,然后传递路径实例以供使用。您可以在ShadowPath实例上调用getPoints以获取添加到原始实例的点。

对于实例化Path实例时的Stub异常,我遇到了安装问题 @RunWith仍设置为JUnit4.class而不是RobolectricTestRunner.class,这意味着我无法实际实例化Path。