Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 机器人3:阴影自定义类_Android_Unit Testing_Mocking_Robolectric_Robolectric Gradle Plugin - Fatal编程技术网

Android 机器人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; } } 我在其他的回答和帖子中读到

我使用的是Robolectric 3,我试图对自定义类进行阴影处理,如下所示:

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();    }