加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从Gradle启动时,Robolectric自定义TestRunner无法正常工

发布时间:2020-12-15 02:10:29 所属栏目:Java 来源:网络整理
导读:我想实现一个自定义的Application类Shadow,以覆盖其中的getInstance()方法.我正在使用Robolectric 3.0并创建了一个MyRobolectricTestRunner类,重写了createClassLoaderConfig()方法,如下所示: public class MyRobolectricTestRunner extends RobolectricTes
我想实现一个自定义的Application类Shadow,以覆盖其中的getInstance()方法.我正在使用Robolectric 3.0并创建了一个MyRobolectricTestRunner类,重写了createClassLoaderConfig()方法,如下所示:

public class MyRobolectricTestRunner extends RobolectricTestRunner {

    public MyRobolectricTestRunner(Class<?> testClass) throws InitializationError {
        super(testClass);
    }

    @Override
    public InstrumentationConfiguration createClassLoaderConfig() {
        InstrumentationConfiguration.Builder builder = InstrumentationConfiguration.newBuilder();
        builder.addInstrumentedClass(App.class.getName());
        return builder.build();
    }
}

ShadowApp类如下所示:

@Implements(App.class)
public class ShadowApp{
    @RealObject private static App instance;

    public static void setAppInstance(App app){
        instance = app;
    }

    @Implementation
    public static App getInstance(){
        return instance;
    }
}

使用Runner的测试注释如下:

@RunWith(MyRobolectricTestRunner.class)
@Config(manifest=Config.NONE,shadows = {ShadowApp.class},constants = BuildConfig.class,sdk = 21)
public class SomeShadowTest {

现在的问题是,当我手动运行测试时(仅针对此单个测试类点击“Run …”),它会毫无问题地通过,但是当我使用Gradle“testDebug”任务时,测试会失败,就好像阴影类根本没用过:(

我已经尝试将Runner父类更改为RobolectricGradleTestRunner,但是当它迫使我使ShadowApp类扩展一个ShadowApplication类时,它最终处于死胡同,它也有getInstance()方法……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读