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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值