android java pipe_Java-使用Dagger 2进行Android单元测试
我有一个使用Dagger 2进行依赖注入的Android应用。 我还在使用最新的gradle构建工具,该工具允许对单元测试和工具测试使用一个构建变体。 我在我的应用程序中使用Component,并且我想对此进行模拟以进行测试。 我正在测试的类不使用任何Android东西,因此它们只是常规的Java类。
在我的主代码中,我在扩展了2732014639205205843969类的类中定义了Component968,但是在单元测试中,我未使用2732014639205205843970。我尝试定义测试Module和2732014639205205843972,但Dagger无法生成Component。 也尝试使用我在应用程序中定义的Component,并在构建它时交换Module,但是应用程序的Component没有用于我的测试类的inject方法。 如何为测试提供Random的模拟实现?
这是一些示例代码:
应用:
public class PipeGameApplication extends Application {
private PipeGame pipeGame;
@Singleton
@Component(modules = PipeGameModule.class)
public interface PipeGame {
void inject(BoardFragment boardFragment);
void inject(ConveyorFragment conveyorFragment);
}
@Override
public void onCreate() {
super.onCreate();
pipeGame = DaggerPipeGameApplication_PipeGame.create();
}
public PipeGame component() {
return pipeGame;
}
}
模组:
@Module
public class PipeGameModule {
@Provides
@Singleton
Random provideRandom() {
return new Random();
}
}
测试的基类:
public class BaseModelTest {
PipeGameTest pipeGameTest;
@Singleton
@Component(modules = PipeGameTestModule.class)
public interface PipeGameTest {
void inject(BoardModelTest boardModelTest);
void inject(ConveyorModelTest conveyorModelTest);
}
@Before
public void setUp() {
pipeGameTest = DaggerBaseModelTest_PipeGameTest.create(); // Doesn't work
}
public PipeGameTest component() {
return pipeGameTest;
}
}
要么:
public class BaseModelTest {
PipeGameApplication.PipeGame pipeGameTest;
// This works if I make the test module extend
// the prod module, but it can't inject my test classes
@Before
public void setUp() {
pipeGameTest = DaggerPipeGameApplication_PipeGame.builder().pipeGameModule(new PipeGameModuleTest()).build();
}
public PipeGameApplication.PipeGame component() {
return pipeGameTest;
}
}
测试模块:
@Module
public class PipeGameTestModule {
@Provides
@Singleton
Random provideRandom() {
return mock(Random.class);
}
}
android java pipe_Java-使用Dagger 2进行Android单元测试相关推荐
- android java websocket client_websocket服务端,android客户端示例
服务端库依赖详见章末 #####spring websocket服务端代码(会话过程) public class HandshakeInterceptor extends HttpSessionHan ...
- Android 依赖注入: Dagger 2 实例解说(一)
本文原创,转载请注明出处:http://blog.csdn.net/zjbpku [Duplicated] link to Dagger on Android - Dagger2具体解释 关于D ...
- Android开源框架之Dagger快速入门
文章目录 一.Dagger是什么? 二.Dagger的使用 2.1 实现目标 2.2 准备工作 2.3 添加Dagger依赖 2.4 @Inject注解的双层含义 2.5 @Component注解 2 ...
- android Java开发设计模式及在android中的应用解析
android Java开发设计模式及在android中的应用解析 什么是设计模式: 可以用一句话概括设计模式---设计模式是一种利用OOP的封闭.继承和多态三大特性,同时在遵循单一职责原则.开闭原则 ...
- java ee 6 sdk中文版,Java EE 6 SDK+Eclipse JEE+Android ADT-Fun言
很多时候,为了生存,需要不断的了解,学习新东西,于是头脑塞满了便便- -|||- -----------------------.. 按照自己的理解: JDK = Java Develope Kit ...
- Android java传递string类型数据给C
本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...
- android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题
android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题 jav ...
- 安卓java读取软件自身包名,android 获取第三方应用程序包名并启动 | 学步园
效果图: 说明: 第一行:应用程序名称 第二行:应用程序包名 第三行:应用程序入口Activity名称 代码如下: package com.hello.project; import java.uti ...
- 安卓 java内存碎片_理解Android Java垃圾回收机制
Jvm(Java虚拟机)内存模型 从Jvm内存模型中入手对于理解GC会有很大的帮助,不过这里只需要了解一个大概,说多了反而混淆视线. Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆. 堆是运行 ...
最新文章
- C安全编码--预处理
- python库和模块的区别_Python动态库模块的名称与文件名不同
- tomcat配置项目路径或部署工程名
- Android7.0 发生的android.os.FileUriExposedException错误
- web前端开发常用的优化技巧汇总
- 论文笔记:Few-Shot Segmentation Without Meta-Learning : A Good Transductive Inference Is All You Need
- login.html id=9453,我关注的官网.html
- 尚硅谷 谷粒学院 毕业设计 在线教育 部署文档
- 推荐一款能够将爱奇艺qsv、腾讯qlv、优酷kux完美转换成mp4的三合一全能格式转换器
- js 拖拽上传文件及文件夹
- js中html5修改字体大小,jquery设置字体大小插件
- 戴尔服务器开机自动关机,戴尔台式电脑自动关机怎么办
- 解决win10以太网没有有效的ip配置
- TensorFlow2.0 Guide官方教程 学习笔记20 -‘Effective TensorFlow 2‘
- 一款【免费+简单+好用+性能强大】的词云(Wordcloud)制作工具(含详细介绍)
- 大数据----数据仓库设计基础(实列演示)
- python下载包失败,下载python包失败
- MySQL数据库创建表报错的解决方案
- 如何使用QQ号来注册腾讯云新用户账号并完成实名认证?
- veed.io 在线视频编辑器技术栈演进