android– 将模拟Retrofit API服务实例注入ActivityInstrumentTestCase2

android– 将模拟Retrofit API服务实例注入ActivityInstrumentTestCase2,第1张

概述我想使用使用MockRestAdapter(https://github.com/squareetrofit/blob/masteretrofit-mock/src/main/javaetrofit/MockRestAdapter.java)创建的模拟RetrofitAPI服务实例,使用Espresso为Activity编写功能测试.这有点棘手,因为你无法通过Activity的构造函数注入任何依赖项.

我想使用使用MockRestAdapter(https://github.com/square/retrofit/blob/master/retrofit-mock/src/main/java/retrofit/MockRestAdapter.java)创建的模拟Retrofit API服务实例,使用Espresso为Activity编写功能测试.

这有点棘手,因为你无法通过Activity的构造函数注入任何依赖项.

目前,单个Retrofit API服务实例存在于我的Application对象中,我在每个ActivitIEs的onCreate()方法中创建了对它的引用.

如何交换模拟Retrofit API服务?也许Dagger就是答案?

解决方法:

是的,Dagger就是答案.关于如何实现这一点,我建议在Github查看Jake Wharton的u2020.简而言之,您为生产和调试风格提供了不同的API实现.或者,您可以为集成测试提供单独的风格.

在没有Dagger的情况下解决这个问题的另一种方法(增加对它的支持对于正在进行的项目来说将是一项非常艰巨的任务),将会有一种集成测试的风格.例如.有发布,调试和模拟口味.

然后你可以在AndroID Manifest中设置一个不同的Application类来设置mock风格 – 一个使用模拟适配器的实现.这里的核心思想是你可以在各种风格中覆盖或扩充主AndroIDManifest.

那大概是这样的:

项目结构

app/    src/       main/           AndroIDManifest.xml - ActivitIEs, services, permissions - all the stuff goes here            java/.../MyApplication.java       mock/           AndroIDManifest.xml - example below           java/.../MockApplication.java       deBUG/    - Not relevant for this example       release/  - Not relevant for this example

主/ AndroIDManifest.xml中

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    package="com.example.androID" >    <!-- Permissions etc -->    <application        androID:name=".MyApplication"        ...        >        <!-- ActivitIEs, services etc -->    </application></manifest>

模拟/ AndroIDManifest.xml中

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID">    <application androID:name=".MockApplication"/></manifest>

Application.java

public class MyApplication extends Application {    @OverrIDe public voID onCreate(Bundle savedState) {        MyAPI API = createAPIAdapter();    }    protected MyAPI createAPIAdapter() {        // Create regular Retrofit adapter    }}

MockApplication.java

public class MockApplication extends MyApplication {    @OverrIDe protected MyAPI createAPIAdapter() {        // Create mock Retrofit adapter    }}

的build.gradle

androID {    // ...    buildTypes {        mock {            applicationIDSuffix '.mock'            versionnameSuffix '-mock'            deBUGgable true        }        deBUG {            applicationIDSuffix '.dev'            versionnameSuffix '-dev'            deBUGgable true        }        release {            signingConfig signingConfigs.release        }    }}
总结

以上是内存溢出为你收集整理的android – 将模拟Retrofit API服务实例注入ActivityInstrumentTestCase2全部内容,希望文章能够帮你解决android – 将模拟Retrofit API服务实例注入ActivityInstrumentTestCase2所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1110714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存