我想使用使用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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)