在2.2+中创建自定义Robolectric阴影

时间:2014-06-11 06:12:41

标签: android unit-testing shadow robolectric

我想创建一个自定义阴影对象,它将监听我在真实对象上进行的调用,以便我可以对阴影进行测试断言。我使用Robolectric来运行我的测试,但我不断收到这个奇怪的错误:

org.fest.reflect.exception.ReflectionError: Unable to find method '$$robo$getData' in com.blah.SomeClass with parameter type(s) []

这就是我尝试过的:

public class SomeClass {
    public void doSomething() {}
}

然后在我的测试目录中创建:

@Implements(SomeClass.class) 
public class ShadowSomeClass {
    @Implementation public void doSomething() {throw new RuntimeException("hi");}
}

然后我尝试在我的自定义TestRunner中绑定它,它扩展了RobolectricTestRunner

@Override
protected ShadowMap createShadowMap() {
    return super.createShadowMap()
            .newBuilder()
            .addShadowClass(ShadowSomeClass.class)
            .build();
}

然后在测试类中,使用我的自定义TestRunner,我编写了一个单元测试:

@Test
public void robolectricNotWork() {
    SomeClass subject = new SomeClass();
    ShadowSomeClass shad = shadowOf_(subject); // this is the offending line of error
}

然后我得到了错误。

我做错了什么?

0 个答案:

没有答案