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()方法…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读