Android 机器人3:阴影自定义类
我使用的是Robolectric 3,我试图对自定义类进行阴影处理,如下所示:Android 机器人3:阴影自定义类,android,unit-testing,mocking,robolectric,robolectric-gradle-plugin,Android,Unit Testing,Mocking,Robolectric,Robolectric Gradle Plugin,我使用的是Robolectric 3,我试图对自定义类进行阴影处理,如下所示: public class Yakir { public int foo() { return 1; } } @Implements(Yakir.class) public class TestYakir { @Implementation public int foo() { return 2; } } 我在其他的回答和帖子中读到
public class Yakir {
public int foo() {
return 1;
}
}
@Implements(Yakir.class)
public class TestYakir {
@Implementation
public int foo() {
return 2;
}
}
我在其他的回答和帖子中读到,Robolectric shadows SDK类和自定义类需要做一些特殊的事情,比如:
公共类RoboServiceRunner扩展RobolectricGradleTestRunner{
public RoboServiceRunner(Class<?> klass) throws InitializationError {
super(klass);
}
@Override
public Config getConfig(Method method) {
Config config = super.getConfig(method);
config.shadows();
return config;
}
@Override
protected ShadowMap createShadowMap(){
ShadowMap shadowMap = super.createShadowMap();
shadowMap = shadowMap.newBuilder().addShadowClass(ServiceTest.TestYakir.class).build();
return shadowMap;
}
}
是:
junit.framework.AssertionFailedError:
预期:2
实际:1
谢谢!因此,在对web进行了更多的挖掘之后,我找到了一个简单的解决方案,对我来说非常有效 您所需要做的就是重写扩展的类中的方法 机器人分子分离机 方法是:
@Override
public InstrumentationConfiguration createClassLoaderConfig() {
InstrumentationConfiguration.Builder builder = InstrumentationConfiguration.newBuilder();
builder.addInstrumentedClass(YourCustomShadowClass.class.getName());
return builder.build(); }
就这样!考试以优异成绩通过:)
@Override
public InstrumentationConfiguration createClassLoaderConfig() {
InstrumentationConfiguration.Builder builder = InstrumentationConfiguration.newBuilder();
builder.addInstrumentedClass(YourCustomShadowClass.class.getName());
return builder.build(); }